繁体   English   中英

如何用第二个 DataFrame 中的值替换一个 DataFrame 中的列中的值,两者在 Python Pandas 中都有主键?

[英]How to replace values in column in one DataFrame by values from second DataFrame both have major key in Python Pandas?

我在 Python Pandas 中有 2 个 DataFrame,如下所示:

DF1

COL1 | ...  | COLn
-----|------|-------
A    | ...  | ...
B    | ...  | ...
A    | ...  | ...
.... | ...  | ...

DF2

G1  | G2
----|-----
A   | 1
B   | 2
C   | 3
D   | 4

我需要用DF2 G2的值替换DF1 COL1的值

因此,结果我需要如下格式的 DF1:

COL1 | ...  | COLn
-----|------|-------
1    | ...  | ...
2    | ...  | ...
1    | ...  | ...
.... | ...  | ...

当然,我的表很大,最好自动执行此操作而不是通过手动调整值:)

我怎样才能在 Python Pandas 中做到这一点?

import pandas as pd

df1 = pd.DataFrame({"COL1": ["A", "B", "A"]}) # Add more columns as required
df2 = pd.DataFrame({"G1": ["A", "B", "C", "D"], "G2": [1, 2, 3, 4]})

df1["COL1"] = df1["COL1"].map(df2.set_index("G1")["G2"])

output df1:

   COL1
0     1
1     2
2     1

您可以尝试使用 Dataframe 的分配或更新方法:

import pandas as pd

df1 = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
df2 = pd.DataFrame({'B': [7, 8, 9]})

尝试

df1 = df1.assign(B=df2['B'])# assign will create a new Dataframe

要么

df1.update(df2)# update makes a in place modification

这里是文档的链接https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.assign.html

https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.update.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM