Python Pandas从数据帧中的一列获取值的索引以应用于另一列



我有一个包含两列的数据帧,还有一个单词列表。我想通过这个列表过滤数据帧的一列,并将该列的匹配行保存在一个新列表中,同时从另一列获取相同索引的值,以将该值保存在第二个列表中。

所以我基本上想按一列过滤我的数据帧,除了我有一些字符串要与单词进行比较,所以我必须循环它们。

我的代码:

dataframe:
letter | sentence
----------------------------------------
L      | "Lorem ipsum dolor sit amet"
C      | "consectetur adipiscing elit"
S      | "sed do eiusmod tempor"
I      | "incididunt ut labore et"
D      | "dolore magna aliqua."
word_list = ["elit","tempor", "aliqua"]
a = []
b = []
for d in dataframe.sentence:
for word in word_list:
if word in d:
b.append(d)
a.append(dataframe.letter[dataframe.sentence[d]])


new_df = pd.DataFrame({'a': a, 'b': b})

我想要的结果:

new_df:
a   | b
-----------------------------------
C   | "consectetur adipiscing elit"
S   | "sed do eiusmod tempor"
D   | "dolore magna aliqua."

问题是这条

b.append(dataframe.letter[dataframe.sentence[d]])

我不知道如何从for循环中当前查看的一列中获取索引,并获取另一列的同一索引的值。我得到的当前错误是:

KeyError: 'consectetur adipiscing elit'

因此,我得到了for循环第一次迭代的正确值,但如何将其索引应用于其他列?

或者有没有其他方法可以通过我的单词列表过滤数据帧?

您可以将df.apply()any():一起使用

word_list = ["elit", "tempor", "aliqua"]
df = df[df["sentence"].apply(lambda x: any(w in x for w in word_list))]
print(df)

打印:

letter                     sentence
1      C  consectetur adipiscing elit
2      S        sed do eiusmod tempor
4      D         dolore magna aliqua.

最新更新