gpt4 book ai didi

python - 使用 Pandas 对来自多个 csv 文件的数据求和

转载 作者:太空宇宙 更新时间:2023-11-04 03:20:44 26 4
gpt4 key购买 nike

我有 -many- csv 文件,其列数相同(行数不同),格式如下:

文件 1:

A1,B1,C1
A2,B2,C2
A3,B3,C3
A4,B4,C4

文件 2:

*A1*,*B1*,*C1*
*A2*,*B2*,*C2*
*A3*,*B3*,*C3*

文件...

输出:

A1+*A1*+...,B1+*B1*+...,C1+*C1*+...
A2+*A2*+...,B2+*B2*+...,C2+*C2*+...
A3+*A3*+...,B3+*B3*+...,C3+*C3*+...
A4+... ,B4+... ,C4+...

例如:

文件 1:

1,0,0
1,0,1
1,0,0
0,1,0

文件 2:

1,1,0
1,1,1
0,1,0

输出:

2,1,0
2,1,2
1,1,0
0,1,0

我正在尝试使用 python.pandas 并且正在考虑这样的事情来创建读取变量:

dic={}
for i in range(14253,14352):
try:
dic['df_{0}'.format(i)]=pandas.read_csv('output_'+str(i)+'.csv')
except:
pass

然后对列求和:

for residue in residues:
for number in range(14254,14255):
df=dic['df_14253'][residue]
df+=dic['df_'+str(number)][residue]

residues 是列名的字符串列表。

我的问题是我的文件有不同的行数,并且只汇总到 df1 的最后一行。我怎样才能将它们加到最长文件的最后一行 - 这样就不会丢失任何数据?我认为 panda 的 groupby.sum 可能是一个选项,但我不知道如何使用它。

添加一个示例 - 现在我明白了:

文件 1:

1,0,0
1,0,1
1,0,0
0,1,0

文件 2:

1,1,0
1,1,1
0,1,0

文件 3:

1,0,0
0,0,1
1,0,0
1,0,0
1,0,0
1,0,1

文件...:

输出:

3,1,0
2,1,3
2,1,0
1,1,0
1,0,0
1,0,1

最佳答案

您可以在 pandas 中使用 Panel ,一个 3D 对象,数据帧集合:

dfs={ i : pd.DataFrame.from_csv('file'+str(i)+'.csv',sep=',',\
header=None,index_col=None) for i in range(n)} # n files.
panel=pd.Panel(dfs)
dfs_sum=panel.sum(axis=0)

dfs 是数据帧的字典。 Panel 使用 Nan 自动完成缺失值并进行计算。例如:

n [500]: panel[1]
Out[500]:
0 1 2
0 1 0 0
1 1 0 1
2 1 0 0
3 0 1 0
4 NaN NaN NaN
5 NaN NaN NaN
6 NaN NaN NaN
7 NaN NaN NaN
8 NaN NaN NaN
9 NaN NaN NaN
10 NaN NaN NaN
11 NaN NaN NaN

In [501]: panel[2]
Out[501]:
0 1 2
0 1 0 0
1 1 0 1
2 1 0 0
3 0 1 0
4 1 0 0
5 1 0 1
6 1 0 0
7 0 1 0
8 NaN NaN NaN
9 NaN NaN NaN
10 NaN NaN NaN
11 NaN NaN NaN

In [502]: panel[3]
Out[502]:
0 1 2
0 1 0 0
1 1 0 1
2 1 0 0
3 0 1 0
4 1 0 0
5 1 0 1
6 1 0 0
7 0 1 0
8 1 0 0
9 1 0 1
10 1 0 0
11 0 1 0

In [503]: panel.sum(0)
Out[503]:
0 1 2
0 3 0 0
1 3 0 3
2 3 0 0
3 0 3 0
4 2 0 0
5 2 0 2
6 2 0 0
7 0 2 0
8 1 0 0
9 1 0 1
10 1 0 0
11 0 1 0

关于python - 使用 Pandas 对来自多个 csv 文件的数据求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34815823/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com