我有一个字符串列表,比如说:
fruit_list = ["apple", "banana", "coconut"]
我有一些Pandas数据框,例如:
import pandas as pd
data = [['Apple farm', 10], ['Banana field', 15], ['Coconut beach', 14], ['corn field', 10]]
df = pd.DataFrame(data, columns = ['fruit_source', 'value'])
我想要根据现有列 'fruit_source' 的文本搜索来填充一个新的列。我想要填充的是与数据框中特定列匹配的元素。一种编写方式如下:
df["fruit"] = NaN
for index, row in df.iterrows():
for fruit in fruit_list:
if fruit in row['fruit_source']:
df.loc[index,'fruit'] = fruit
else:
df.loc[index,'fruit'] = "fruit not found"
在这里,DataFrame会增加一列来显示水果来源采集的水果种类。
然而,在扩展到较大的DataFrame时,这种迭代可能会对性能造成问题。原因是,随着引入更多行,由于同时迭代列表,迭代会变得非常慢。
是否存在更有效的方法可以实现?