Python pandas - 将groupby输出写入文件

时间:2016-01-26 23:17:19

标签: python pandas

我使用以下内容获取有关我的数据的比例信息:

>>>testfile = pd.read_csv('CCCC_output_all_FINAL.txt', delimiter="\t", header=0)
>>> testdf = pd.DataFrame({'Proportion': testfile.groupby(('Name','Chr','Position','State')).size() / 39})
>>> testdf.head(5)
                                        Proportion
Name    Chr Position  State           
S-3AAAA 16  27557749  4        0.025641
                                    5        0.076923
                                    6        0.025641
S-3AAAC 15  35061490  2        0.076923
                                    4        0.025641

>>> testdf.to_csv('CCCC_output_summary.txt', sep='\t', header=True, index=False)

输出文件只有列Proportion。我想要下表输出:

Name    Chr    Position     State     Proportion
S-3AAAA  16     27557749     4         0.025641
S-3AAAA  16     27557749     5         0.076923
S-3AAAA  16     27557749     6         0.025641
S-3AAAC  15     35061490     2         0.076923
S-3AAAC  15     35061490     4         0.025641

是否可以/轻松将pandas输出写入这样的文件?

2 个答案:

答案 0 :(得分:4)

使用reset_index()

testdf.reset_index().to_csv('CCCC_output_summary.txt', sep='\t', header=True, index=False)

答案 1 :(得分:0)

我遇到了同样的问题。如上所述reset_index()对我不起作用。我使用了另一个Stackoverflow的答案,它工作得非常好。详情如下。

输入csv包含以下两列数据: 商品代码,数量

需要输出: 平均数量按项目分组,两列均为csv的一部分。

初始代码:

import pandas as pd

data_directory = os.path.join("D:\\data")
df = pd.read_csv(os.path.join(data_directory, "input_file.csv"))

df_avg = df.groupby("Item Code")["Quantity"].mean()
df_avg.reset_index().to_csv(os.path.join(data_directory,'output_file.csv'), sep='\t', header=True, index=False )

收到的输出: 仅将平均数量写入输出文件

以下代码解决了问题:

import pandas as pd

data_directory = os.path.join("D:\\data")
df = pd.read_csv(os.path.join(data_directory, "input_file.csv"))

df.groupby("Item Code")["Quantity"].mean().reset_index()[["Item Code", "Quantity"]].to_csv(os.path.join(data_directory,'output_file.csv'))

通过上面的代码,我得到的输出文件有两列:Item Code和Quantity,第二列包含每个Item代码的平均数量。

其他堆栈溢出引用:Pandas groupby to to_csv