如何使用另一个较小的 pandas 数据框过滤 pandas 数据框

我有 2 个数据框,第一个看起来像这样


df1:


    MONEY    Value

0    EUR      850

1    USD      750

2    CLP        1

3    DCN        1

df2:


      Money

0      USD

1      USD

2      USD

3      USD

4      EGP

...    ...

25984  USD

25985  DCN

25986  USD

25987  CLP

25988  USD

我想删除 df1 中不存在的 df2 的“金钱”值。并添加 df1 中“Value”列的任意列值


  Money    Value

0      USD      720

1      USD      720

2      USD      720

3      USD      720

...    ...

25984  USD      720

25985  DCN        1

25986  USD      720

25987  CLP        1

25000  USD      720


米脂
浏览 74回答 1
1回答

月关宝盒

一步步:df1.set_index("MONEY")["Value"]此代码将列转换MONEY为Dataframe索引。结果是:    print(df1)    MONEY    EUR    850    USD    150    DCN      1df2["Money"].map(df1.set_index("MONEY")["Value"])此代码将 的内容映射df2到df1。这将返回以下内容:    0    150.0    1      NaN    2    850.0    3      NaNdf2现在我们将前一列分配给名为的新列Value。把它们放在一起:df2["Value"] = df2["Money"].map(df1.set_index("MONEY")["Value"])df2现在看起来像:     Money  Value    0   USD  150.0    1   GBP    NaN    2   EUR  850.0    3   CLP    NaN只剩下一件事要做:删除任何有价值的行NaN:df2.dropna(inplace=True)整个代码示例:import pandas as pd# Create df1x_1 = ["EUR", 850], ["USD", 150], ["DCN", 1]df1 = pd.DataFrame(x_1, columns=["MONEY", "Value"])# Create d2x_2 = "USD", "GBP", "EUR", "CLP"df2 = pd.DataFrame(x_2, columns=["Money"])# Create new column in df2 called 'Value'df2["Value"] = df2["Money"].map(df1.set_index("MONEY")["Value"])# Drops any rows that have 'NaN' in column 'Value'df2.dropna(inplace=True)print(df2)输出:Money  Value0   USD  150.02   EUR  850.0
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python