我的-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]
残基是一个字符串列表,它是列名。
我遇到的问题是我的文件有不同的行数,只是总结到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
答案 0 :(得分:2)
您可以在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
是数据框的词典。面板完成后自动缺少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
答案 1 :(得分:0)
寻找同样的事情,我发现现在不建议使用面板,所以我在这里发布新闻:
unless
从0.20.0版开始不推荐使用:表示3-D数据的推荐方法是通过to_frame()方法或xarray包在DataFrame上使用> MultiIndex。 > Pandas提供了to_xarray()方法来自动执行此转换。
(defmethod also-working ((test test))
(with-slots (a) test
(iter
(for i below 3)
(iter
(for j below 3)
(unless (= 10 j)
(log:info "R: ~D C: ~D" i j))))))
将宽格式转换为DataFrame的长格式(堆叠格式),其数据列是> Panel的项目,其索引是由Panel的主要和> minor组成的MultiIndex
我建议使用 pandas.DataFrame.sum
class pandas.Panel(data=None, items=None, major_axis=None, minor_axis=None, copy=False, dtype=None)
参数:
轴:{索引(0),列(1)} 要应用的功能的轴。
一个人可以像在B.M.中一样使用它。回答