0

嗨,我在 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,5,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\,6
Pear,2\,4
Grape,5\,7
4

1 回答 1

1

试试这个代码:

your_dataframe = pd.DataFrame({'input_string': ['Apple', 'Apple', 'Pear', 'Pear', 'Grape', '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,5.0,7.0,
Pear,2.0,4.0,
于 2021-01-22T19:59:32.113 回答