Pandas:将数据帧的某一行添加到另一个数据帧的某一行

时间:2015-12-16 00:35:02

标签: python pandas dataframe

想要这样做:

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的行。 有没有方便的方法呢?

1 个答案:

答案 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。 首先,您可以连接df1df2

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获取sumABC

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