如何在一列上连接 pandas 数据帧并覆盖?
How to concatenate pandas dataframes with override on one column?
考虑以下数据帧:
import pandas as pd
data1={'column_a' : ['a','a','b','c','d','e'],
'column_b' : [1,2,3,4,5,6],
'column_c' : [9,8,6,4,5,4]}
data2={'column_a' : ['f','f','g','a','a','a'],
'column_b' : [7,8,9,7,5,6],
'column_c' : [6,8,7,6,5,4]}
df_1 = pd.DataFrame(data1)
df_2 = pd.DataFrame(data2)
如何连接 2 个数据帧,以便 df_2
附加到 df_1
,但覆盖 column_a
上的 df_1
?
我正在寻找以下结果
column_a column_b column_c
b 3 6
c 4 4
d 5 5
e 6 4
f 7 6
f 8 8
g 9 7
a 7 6
a 5 5
a 6 4
请注意来自 df_1
的顶部带有 'a' 的 2 行如何不再可用,因为它们已被来自 df_2
的 3 a 覆盖。
只需在 append
或 concat
之前进行一次筛选
pd.concat([df_1.loc[~df_1.column_a.isin(df_2.column_a)],df_2])
Out[29]:
column_a column_b column_c
2 b 3 6
3 c 4 4
4 d 5 5
5 e 6 4
0 f 7 6
1 f 8 8
2 g 9 7
3 a 7 6
4 a 5 5
5 a 6 4
考虑以下数据帧:
import pandas as pd
data1={'column_a' : ['a','a','b','c','d','e'],
'column_b' : [1,2,3,4,5,6],
'column_c' : [9,8,6,4,5,4]}
data2={'column_a' : ['f','f','g','a','a','a'],
'column_b' : [7,8,9,7,5,6],
'column_c' : [6,8,7,6,5,4]}
df_1 = pd.DataFrame(data1)
df_2 = pd.DataFrame(data2)
如何连接 2 个数据帧,以便 df_2
附加到 df_1
,但覆盖 column_a
上的 df_1
?
我正在寻找以下结果
column_a column_b column_c
b 3 6
c 4 4
d 5 5
e 6 4
f 7 6
f 8 8
g 9 7
a 7 6
a 5 5
a 6 4
请注意来自 df_1
的顶部带有 'a' 的 2 行如何不再可用,因为它们已被来自 df_2
的 3 a 覆盖。
只需在 append
或 concat
pd.concat([df_1.loc[~df_1.column_a.isin(df_2.column_a)],df_2])
Out[29]:
column_a column_b column_c
2 b 3 6
3 c 4 4
4 d 5 5
5 e 6 4
0 f 7 6
1 f 8 8
2 g 9 7
3 a 7 6
4 a 5 5
5 a 6 4