Chr*_*rry 7 python dataframe pandas
我有 2 个 Pandas dfs,A 和 B。两者都有 10 列和索引“ID”。如果 A 和 B 的 ID 匹配,我想用 A 的行替换 B 的行。我尝试使用 pd.update,但还没有成功。任何帮助表示赞赏。
Shi*_*ijo 10
下面的代码应该可以解决问题
s1 = pd.Series([5, 1, 'a'])
s2 = pd.Series([6, 2, 'b'])
s3 = pd.Series([7, 3, 'd'])
s4 = pd.Series([8, 4, 'e'])
s5 = pd.Series([9, 5, 'f'])
df1 = pd.DataFrame([list(s1), list(s2),list(s3),list(s4),list(s5)], columns = ["A", "B", "C"])
s1 = pd.Series([5, 6, 'p'])
s2 = pd.Series([6, 7, 'q'])
s3 = pd.Series([7, 8, 'r'])
s4 = pd.Series([8, 9, 's'])
s5 = pd.Series([9, 10, 't'])
df2 = pd.DataFrame([list(s1), list(s2),list(s3),list(s4),list(s5)], columns = ["A", "B", "C"])
df1.loc[df1.A.isin(df2.A), ['B', 'C']] = df2[['B', 'C']]
print df1
Run Code Online (Sandbox Code Playgroud)
输出
A B C
0 5 6 p
1 6 7 q
2 7 8 r
3 8 9 s
4 9 10 t
Run Code Online (Sandbox Code Playgroud)
从评论中编辑:
要替换整行而不是仅替换某些列:
cols = list(df1.columns)
df1.loc[df1.A.isin(df2.A), cols] = df2[cols]
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
15252 次 |
最近记录: |