我有许多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的最后一行。我如何将它们加到最长文件的最后一行-这样就不会丢失数据了?我认为熊猫的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发布于 2016-01-15 17:56:33
您可以在熊猫(一个3D对象)数据集中使用Panel:
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是一个数据字典。面板自动完成缺值的楠和做好的总和。例如:
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发布于 2019-02-23 09:24:44
为了寻找同样的东西,我发现Panel现在不受欢迎了,所以我在这里发布了这样的消息:
class pandas.Panel(data=None, items=None, major_axis=None, minor_axis=None, copy=False, dtype=None)自0.20.0版以来,推荐的表示三维数据的方法是使用DataFrame上的>MultiIndex (通过to_frame()方法)或使用xarray包。>Pandas提供了一个to_xarray()方法来实现这种转换的自动化。
to_frame(filter_observations=True)将宽格式转换为长(堆叠)格式为DataFrame,其列为>面板的项,其索引是由面板的主要和>次要部分组成的MultiIndex
我建议使用pandas.DataFrame.sum
DataFrame.sum(axis=None, skipna=None, level=None, numeric_only=None, min_count=0, **kwargs)参数: 轴:{index (0),列(1)}要应用的函数的轴。
你可以用与B.M.答案相同的方式使用它。
https://stackoverflow.com/questions/34815823
复制相似问题