【问题标题】:How to find matching python data frame values with other data frame如何找到与其他数据框匹配的python数据框值
【发布时间】:2017-07-05 18:44:19
【问题描述】:

如果其他数据框 df2['SersName'] 中存在 df1['Field1'] 值,我想在 df1['Result'] 中更新为 True 或 False

请帮忙...

df1:

Field1          Field2  Result
2020RATIO001001 A       TRUE
2020RATIO001003 B       TRUE
2020RATIO001005 C       TRUE
2020RATIO001XYZ D       FALSE
2020RATIO001123 E       FALSE

df2:

SersName        Field2
2020RATIO001001 1
2020RATIO001003 2
2020RATIO001005 3
2020RATIO001007 4
2020RATIO001009 5
2020RATIO001011 6
2020RATIO001013 7
2020RATIO001015 8

我尝试了以下脚本:

SeriesFileNameMap = df1['Field1'].set_index('Field1')
SeriesFileNameMap.update(df2.set_index('SersName'))
df1['Result'] = SeriesFileNameMap.values

【问题讨论】:

  • @FLab,更新,检查

标签: python pandas dataframe


【解决方案1】:

你需要使用isin

import pandas as pd

df1 = pd.read_csv(StringIO("""Field1 Field2
2020RATIO001001 A
2020RATIO001003 B
2020RATIO001005 C
2020RATIO001XYZ D
2020RATIO001123 E"""),sep=" ")

df2 = pd.read_csv(StringIO("""SersName Field2
2020RATIO001001 1
2020RATIO001003 2
2020RATIO001005 3
2020RATIO001007 4
2020RATIO001009 5
2020RATIO001011 6
2020RATIO001013 7
2020RATIO001015 8"""),sep=" ")

df1['Result'] = df1['Field1'].isin(df2['SersName'])

结果df1是:

Field1  Field2  Result
0   2020RATIO001001 A   True
1   2020RATIO001003 B   True
2   2020RATIO001005 C   True
3   2020RATIO001XYZ D   False
4   2020RATIO001123 E   False

【讨论】:

    猜你喜欢
    • 2020-02-17
    • 2015-11-21
    • 1970-01-01
    • 2020-06-16
    • 1970-01-01
    • 2021-04-17
    • 1970-01-01
    • 1970-01-01
    • 2022-11-07
    相关资源
    最近更新 更多