python 如何创建DataFrame,以便在数据集的“Language”列中仅显示法语电影,其中该列中有多种语言?

0s7z1bwu  于 2022-10-30  发布在  Python
关注(0)|答案(3)|浏览(158)

如何创建DataFrame,以便在数据集的“Language”列中仅显示法语电影,其中该列中有多种语言?
示例:

Languages column:
French
English
German,French,Spanish
Spanish,English,French
French, English, Gernman

我一直在尝试的只带回了语言列中只有法语作为值的列。请帮助!
我试过:

df.loc[df['column_name'] == some_value]

但它只返回仅使用法语的电影,而不返回同时使用法语和其他语言的电影。

m3eecexj

m3eecexj1#

str.contains与单词边界(\b)一起使用以避免匹配子字符串(例如,“Abc”与“Abcde”匹配):

df.loc[df['column_name'].str.contains(r'\bFrench\b', case=False)]

如果您确定没有可能的子字串相符项目(语言可能有):

df.loc[df['column_name'].str.contains('French', case=False)]
rryofs0p

rryofs0p2#

Loc函数返回指定索引处的数据。您应该获得如下所示的所需行:

df[df['column_name'] == 'value']
lc8prwob

lc8prwob3#

如果Language列包含用逗号分隔的语言,那么你可以用str.split(',')将该字符串拆分成',',返回list,然后检查列表中是否包含法语。你可以用Pandas apply()检查,它可以将一个函数应用于列的每个元素。Pandas apply()有更多的功能,通常非常有用。
工作示例:

import pandas as pd

data = {
    'languages': ['French', 'English', 'German,French,Spanish', 'Spanish,English,French', 'French,English,German']
}

df = pd.DataFrame(data, columns=['languages'])

def check_language(languages: str):

    lang_split = languages.split(',')
    res = 'French' in lang_split
    return res

df['French_included'] = df['languages'].apply(check_language)

或者,由于check函数非常简单,您可以编写如下代码:

df['French_included'] = df['languages'].apply(lambda e: 'French' in e.split(','))

其返回

df
                languages  French_included
0                  French             True
1                 English            False
2   German,French,Spanish             True
3  Spanish,English,French             True
4   French,English,German             True

当然,您可以编写该函数来执行任何您喜欢的操作,例如返回French而不是返回TrueFalse,或者执行其他检查,例如忽略大写/小写等。

相关问题