遍历列表并在 pandas 数据框中查找字符串

Loop through list and find strings in pandas dataframe

我是 python/pandas 新手,遇到以下问题:我有一个名为 'cat' 的列表,其中包含代表类别的 13 个不同字符串。我还有一个名为 'ku_drop' 的数据框,其中包含 10 列 HTML 代码(字符串格式),我想从中提取信息。 现在,我想在数据框中搜索 'cat'-list 的每个字符串,并将包含特定字符串的每个单元格保存在同一列中。 (例如,所有包含字符串 'Arbeitsatmosphäre' 的单元格都应保存在 X1 列中,所有包含 'Kommunikation' 的单元格应保存在 X2 列中,等等。) 我怎样才能做到这一点?我尝试了以下方法,但我只收到一个空数据帧 ...

cat = ['Arbeitsatmosphäre', 'Kommunikation', 'Kollegenzusammenhalt', 'Work-Life-Balance', 'Vorgesetztenverhalten', 'Interessante Aufgaben', 'Gleichberechtigung', 'Umgang mit älteren Kollegen', 'Arbeitsbedingungen', 'Umwelt-/Sozialbewusstsein', 'Gehalt/Sozialleistungen', 'Image', 'Karriere/Weiterbildung']
cat_length = len(cat)
df_appender = []
for i in range(cat_length):
    x = "{}".format(category[i] for category in cat)
    df_cat = ku_drop[ku_drop.apply(lambda col: col.str.contains(x, case=False), axis=1)].stack().to_frame()
    df_cat.columns = ['X[i]']
    df_cat = df_cat.dropna(axis=0)
    df_appender.append(df_cat)
df_appender

我知道我的代码可能有很多缺陷,请原谅,因为到目前为止我真的不是很熟悉pandas。

尝试:

cat = ['Arbeitsatmosphäre', 'Kommunikation', 'Kollegenzusammenhalt', 'Work-Life-Balance', 'Vorgesetztenverhalten', 'Interessante Aufgaben', 'Gleichberechtigung', 'Umgang mit älteren Kollegen', 'Arbeitsbedingungen', 'Umwelt-/Sozialbewusstsein', 'Gehalt/Sozialleistungen', 'Image', 'Karriere/Weiterbildung']
ku_drop = pd.DataFrame({'c1': ['Arbeitsatmosphäre abc', 'abc', 'Work-Life-Balance abc', 'Arbeitsatmosphäre abc'], 'c2': ['abc', 'abc Vorgesetztenverhalten abc', 'Kommunikation abc abc', 'abc abc Arbeitsatmosphäre']})

df = pd.DataFrame(index= range(len(ku_drop)), columns = cat)
for i, c in enumerate(cat):
    used = 0
    for j, c2 in enumerate(ku_drop.columns):
        temp = ku_drop[ku_drop[c2].str.contains(c)][c2].values
        if len(temp)>0:
            df.loc[used:used+len(temp)-1,c] = temp
            used += len(temp)

输出: