寻找一种方法来检查关键字在数据框扇区列中的出现情况



我有以下列的数据框架:[company_name, company_sector, company_country]

有10个独特的行业:商业服务、金融服务、技术等。它看起来是这样的:输入图片描述

另一方面,我有一个关键字列表= ['services', 'holdings', 'group', ' manufacturing ']等

我正在寻找一种方法来检查每个关键字在company_name中发生的次数,并将其分配给company_sector:输入图片描述

的意义:如有"大西洋航运控股有限公司";并且它属于行业Industrials -然后Industrials将有一个计数1的关键字持有(我已经改变了所有的小写-关键字和公司名称)

如果有公司"Atlantic Navigation Holdings (S) Limited"并且它属于行业Industrials -然后Industrials将有一个计数1的关键字持有(我已经改变了所有的小写-关键字和公司名称)

  1. 首先创建一个新的数据框架骨架并填充0:

    counts_df = pd。DataFrame(列=关键字,指数= df [' comapny_sector '] .unique ())Counts_df = Counts_df .fillna(0)

  2. 通过数据帧检查关键字是否在company_name中,如果存在-添加到df:

    for _, row in train_df.iterrows():对于关键词中的关键词:如果关键字在行['company_name']:counts_df。Loc [row['company_sector'],关键字]+= 1

    counts_df

可以使用groupby from pandas[1]来选择每个扇区。可以根据每个扇区计算关键字在for循环中的出现次数。

我使用默认字典[2]来创建这个新的数据框架。

[1] https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.groupby.html[2] https://docs.python.org/3/library/collections.html collections.defaultdict

import pandas as pd
from collections import defaultdict
# dictionary with fake data
d = {'sector': ['one', 'one', 'two', 'two' , 'one'], 'name': ['a', 'b', 'b', 'a', 'b']}
# convert dictionary to pandas DataFrame
df = pd.DataFrame(d)
sector  name
0   one a
1   one b
2   two b
3   two a
4   one b
keywords = ['a', 'b', 'c']
# create empty dictionary
new_d = defaultdict(list)
for key, group in df.groupby('sector'):
for k in keywords:
new_d[key].append(sum(group['name'].str.contains(k)))
pd.DataFrame(new_d, index=keywords)
one   two
a   1   1
b   2   1
c   0   0

在这种情况下,关键字作为新数据框中的索引,列作为扇区。

相关内容

  • 没有找到相关文章

最新更新