提问人:ElenaU 提问时间:6/11/2023 更新时间:6/11/2023 访问量:57
如何测试一个数据帧是否包含来自另一个数据帧的字符串(循环)
How to test if one dataframe contains string from another dataframe (loop)
问:
有两个数据帧(地址和城市),我尝试检查哪个地址对应于某个地区的某个城市。 我有 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)))
这是行不通的
答:
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)
上一个:识别矩形中是否存在点列表
评论