在列值上覆盖并附加 pandas 数据帧
overwrite and append pandas data frames on column value
我有一个基础数据框 df1:
id name count
1 a 10
2 b 20
3 c 30
4 d 40
5 e 50
这里我有一个更新了 df2 的新数据框:
id name count
1 a 11
2 b 22
3 f 30
4 g 40
我想覆盖这两个数据框并将其附加到列名上。
例如:a 和 b 存在于 df1 中,但也存在于具有更新计数值的 df2 中。所以我们用 a 和 b 的新计数更新 df1。由于 df1 中不存在 f 和 g,因此我们附加它们。
这是所需操作后的示例:
id name count
1 a 11
2 b 22
3 c 30
4 d 40
5 e 50
3 f 30
4 g 40
我试过 df.merge 或 pd.concat 但似乎没有任何东西能给我我需要的输出。?任何人都可以
使用combine_first
df2=df2.set_index(['id','name'])
df2.combine_first(df1.set_index(['id','name'])).reset_index()
Out[198]:
id name count
0 1 a 11.0
1 2 b 22.0
2 3 c 30.0
3 3 f 30.0
4 4 d 40.0
5 4 g 40.0
6 5 e 50.0
我有一个基础数据框 df1:
id name count
1 a 10
2 b 20
3 c 30
4 d 40
5 e 50
这里我有一个更新了 df2 的新数据框:
id name count
1 a 11
2 b 22
3 f 30
4 g 40
我想覆盖这两个数据框并将其附加到列名上。 例如:a 和 b 存在于 df1 中,但也存在于具有更新计数值的 df2 中。所以我们用 a 和 b 的新计数更新 df1。由于 df1 中不存在 f 和 g,因此我们附加它们。 这是所需操作后的示例:
id name count
1 a 11
2 b 22
3 c 30
4 d 40
5 e 50
3 f 30
4 g 40
我试过 df.merge 或 pd.concat 但似乎没有任何东西能给我我需要的输出。?任何人都可以
使用combine_first
df2=df2.set_index(['id','name'])
df2.combine_first(df1.set_index(['id','name'])).reset_index()
Out[198]:
id name count
0 1 a 11.0
1 2 b 22.0
2 3 c 30.0
3 3 f 30.0
4 4 d 40.0
5 4 g 40.0
6 5 e 50.0