(不知道如何在这里引入矩阵以提高可读性) 我有两个用 Panda 和 Python 获得的数据框。
df1 = pd.DataFrame({'Index': ['0','1','2'], 'number':[3,'dd',1], 'people':[3,'s',3]})
df1 = df1.set_index('Index')
df2 = pd.DataFrame({'Index': ['0','1','2'], 'quantity':[3,2,'hi'], 'persons':[1,5,np.nan]})
我想根据索引对列的数量进行求和。列没有相同的名称,并且可能包含字符串。 (事实上我每个 df 有 50 列)。我想将 nan 视为 0。结果应如下所示:
df3
索引列 1 列 2
0 6 4
1 楠楠
2楠楠
我想知道如何才能做到这一点。 笔记: 当然,双倍的 while 或 for 就可以解决问题,只是不太优雅......
indices=0
columna=0
while indices<len(df.index)-1:
while columna<numbercolumns-1:
df3.iloc[indices,columna]=df1.iloc[indices,columna] +df2.iloc[indices,columna]
indices += 1
columna += 1
谢谢。
最佳答案
您可以尝试连接两个数据帧,然后根据索引组添加
df1.columns = df.columns
df1.people = pd.to_numeric(df1.people,errors='coerce')
pd.concat([df,df1]).groupby('Index').sum()
输出:
number people
Index
A 8 5.0
B 2 2.0
C 2 5.0
F 3 3.0
关于Python根据索引添加两个数据帧(已编辑),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54494282/