如何在一个数组的数据帧中找到子字符串列表,并使用数组值创建一个新列?例如,我开始使用str.contains
并键入实际的字符串值(见下文)
import pandas as pd
import numpy as np
#Filepath directory
csv_report = filepath
#Creates dataframe of CSV report
csv_df = pd.read_csv(csv_report)
csv_df['animal'] = np.where(csv_df.item_name.str.contains('Condor'), "Condor",
np.where(csv_df.item_name.str.contains('Marmot'), "Marmot",
np.where(csv_df.item_name.str.contains('Bear'),"Bear",
np.where(csv_df.item_name.str.contains('Pika'),"Pika",
np.where(csv_df.item_name.str.contains('Rat'),"Rat",
np.where(csv_df.item_name.str.contains('Racoon'),"Racoon",
np.where(csv_df.item_name.str.contains('Opossum'),"Opossum")))))))
如果字符串值在数组中,我将如何实现上述代码?以下示例:
import pandas as pd
import numpy as np
#Filepath directory
csv_report = filepath
#Creates dataframe of CSV report
csv_df = pd.read_csv(csv_report)
animal_list = np.array(['Condor', 'Marmot','Bear','Pika','Rat','Racoon','Opossum'])
有一种比使用
apply
或几个np.where
更好的方法。看看np.select。 这里和另一个答案一样,我们假设每一行只能有一个匹配项资料
从@Jonathan Leon偷来的
定义numpy select的条件
输出
不区分大小写
在这里,您应该使用
我认为有一个更干净的方法来写这个,但它做你想要的。如果您担心区分大小写或全词匹配,则必须根据需要修改此选项。此外,您不需要np.array,只需要一个列表
相关问题 更多 >
编程相关推荐