首页 > 解决方案 > 按数据框中的字符串过滤并添加单独的值

问题描述

鉴于此数据框,是否可以查找特定字符串,例如位于国家/地区列表中的国家/地区?(例如,'Country' 中的第一个索引,其中包含单词 Japan,其对应的值为 1)。是否可以总结出每个国家对应的值?(最终结果:日本:1+3=4 美国:2 欧洲:4)

countries=["Europe","USA","Japan"]
df=pd.DataFrame={'Employees':[1,2,3,4],
                 'Country':['Japan;Security','USA;Google',"Japan;Sega","Europe;Google"]}
print(df)

谢谢

标签: pythonpandas

解决方案


如果您只想使用国家列表中指定的值。你可以做这样的事情 -

patt = '(' + '|'.join(countries) + ')'
grp = df.Country.str.extract(pat=patt, expand=False).values
new_df = df.groupby(grp).agg({'Employees': sum})

例如,如果初始国家/地区列表缺少“日本”-

countries = ["Europe", "USA"]
patt = '(' + '|'.join(countries) + ')'
grp = df.Country.str.extract(pat=patt, expand=False).values
new_df = df.groupby(grp, dropna=False).agg({'Employees': sum}).reset_index().rename(
    columns={'index': 'Country'}).fillna('other')

输出-

  Country  Employees
0  Europe          4
1     USA          2
2   other          4 # see the change

推荐阅读