如何测试一个数据帧是否包含来自另一个数据帧的字符串(循环)

How to test if one dataframe contains string from another dataframe (loop)

提问人:ElenaU 提问时间:6/11/2023 更新时间:6/11/2023 访问量:57

问:

有两个数据帧(地址和城市),我尝试检查哪个地址对应于某个地区的某个城市。 我有 2 个数据帧:

cities = pd.DataFrame({'region': {0: 'region_1', 1: 'region_1', 2: 'region_2'}
                      'city': {0: 'city_1', 1: 'city_2', 2: 'city_3'}},
                      columns=['city', 'region'])

addresses = pd.DataFrame({'region': {0: 'region_1', 1: 'region_2', 2: 'region_1'},
                       'address': {0: 'adress_1', 1: 'adress_2', 2: 'adress_3'}},
                       columns=['region', 'address'])

因此,我尝试为每行添加一个带有 True/False 的列,以防城市中的区域位于地址区域中,而城市中的城市位于地址中。我尝试了以下方法:

cities_list = cities.groupby('region')['name'].agg(list).reset_index(city='cities')
cities_list = cities_list.astype('string')
addresses = addresses.astype('string')

for row in ['region', 'address']:
       regions_list = cities_list ['region']
       names_list = cities_list ['city']
       row['check'] = addresses['region'].str.findall('|'.join(regions_list))&`addresses['address'].str.findall('|'.join(names_list)))

这是行不通的

Python 字符串 数据帧 循环 ISIN

评论


答:

0赞 merruem 6/11/2023 #1

您可以使用循环并循环访问一个 DataFrame 的值,以检查它们是否存在于另一个 DataFrame 中。

import pandas as pd

def check_string(df1, df2):
    for value in df1['Column_Name']:
        if any(value in str(row) for row in df2['Column_Name']):
            print(f"String '{value}' found in df2.")
        else:
            print(f"String '{value}' not found in df2.")

# Example dataframes
df1 = pd.DataFrame({'Column_Name': ['String1', 'String2', 'String3']})
df2 = pd.DataFrame({'Column_Name': ['This is String1', 'Some other text', 'String3 data']})

# Calling the function
check_string(df1, df2)