Python 列分组和拆分

问题描述

嗨,我在 Python 数据框中有以下数据:

input_string     value
Apple            5
Apple            6
Pear             2
Pear             4
Grape            5
Grape            7

我希望将输出写入 csv 文件

input_string,col1,col2
Apple,5,6
Pear,2,4
Grape,7

我怎样才能做到这一点?我尝试使用 group by

df_combined_values = (df.groupby('input_string',sort=False)['value'].agg([lambda x: ','.join(map(str,x))]).reset_index())
print(df)
df_combined_values.to_csv(r'C:/someFolder/output_file.csv',index=False,quoting=csv.QUOTE_NONE,encoding='utf8',escapechar='\\')

打印命令产生

     input_string     <lambda>

0    Apple            5,6
1    Pear             2,4
2    Grape            5,7

但是 csv 文件显示

input_string,<lambda>
Apple,5\,2\,7

解决方法

试试这个代码:

your_dataframe = pd.DataFrame({'input_string': ['Apple','Apple','Pear','Grape','Apple'],'value':[5,6,2,4,5,7,10]})
your_dataframe = your_dataframe.groupby('input_string')['value'].apply(list).reset_index()
your_dataframe
for i,row in your_dataframe.iterrows():
    for j,v in enumerate(row['value']):
        your_dataframe.loc[i,f'col{j + 1}'] = v
del your_dataframe['value']

结果

input_string,col1,col2,col3
Apple,5.0,6.0,10.0
Grape,7.0,Pear,2.0,4.0,