想要这样做:
df1=
A B C Max
1 2 3 C
4 2 1 A
3 5 2 B
3 2 4 C
7 5 2 A
df2=
A B C Max
1 1 2 C
2 1 1 A
1 2 1 B
返回:
A B C Max
2 3 5 C
6 3 2 A
4 7 3 B
4 3 6 C
9 6 3 A
基本上,df1从df2添加具有相同max的行。 有没有方便的方法呢?
答案 0 :(得分:0)
这是一种方法:
mask = df2.iloc[0:2]
frames = [df2, mask]
result = pd.concat(frames)
result.index = range(len(result))
df3 = df1.add(result)
df3['Max'] = df1['Max']
df3
输出:
A B C Max
2 3 5 C
6 3 2 A
4 7 3 B
4 3 6 C
9 6 3 A
以上是您原始问题的答案,但根据您尝试做的事情,还有其他方法可以解决这个问题。例如,如果您想知道sum
中每个唯一值的Max
,您也可以使用pivot_table
。
首先,您可以连接df1
和df2
:
new = [df1,df2]
df4 = pd.concat(new)
df4.index = range(len(df4))
df4
A B C Max
0 1 2 3 C
1 4 2 1 A
2 3 5 2 B
3 3 2 4 C
4 7 5 2 A
5 1 1 2 C
6 2 1 1 A
7 1 2 1 B
然后,您可以使用pivot_table
获取sum
值A
,B
和C
pd.pivot_table(df4,index=['Max'], values=['A', 'B', 'C'], aggfunc = [np.sum])
输出:
sum
A B C
Max
A 13 8 4
B 4 7 3
C 5 5 9