问题描述
嗨,我在 Python 数据框中有以下数据:
input_string value
Apple 5
Apple 6
Pear 2
Pear 4
Grape 5
Grape 7
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
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,