如何使用 pandas 删除 csv 列中单元格中的某个值

How to delete a certain value in a cell in columns of csv using pandas

我需要帮助删除“None”以及具有一种或多种语言的 language 列中的额外逗号

这是现有的 csv:

f = pd.DataFrame({'Movie': ['name1','name2','name3','name4'],
                  'Year': ['1905', '1905','1906','1907'],
                  'Id': ['tt0283985', 'tt0283986','tt0284043','tt3402904'],
                  'language':['Mandarin,None','None,Cantonese','Mandarin,None,Cantonese','None,Cantonese']})

其中 f 现在看起来像:

   Movie  Year         Id   language
0  name1  1905  tt0283985  Mandarin,None
1  name2  1905  tt0283986  None,Cantonese
2  name3  1906  tt0284043  Mandarin,None,Cantonese
3  name4  1907  tt3402904  None,Cantonese

结果应该是这样的:

   Movie  Year         Id             language
0  name1  1905  tt0283985            Mandarian
1  name2  1905  tt0283986            Cantonese
2  name3  1906  tt0284043            Mandarin,Cantonese
3  name4  1907  tt3402904            Cantonese

也有其他栏目在language栏目只有'None'个值,所以我不能只用excel中的replace功能,还有多出来的","的问题这样做之后。所以我可能需要有关使用 pandas 或其他东西的新方法的帮助。 提前致谢!


您可以删除所有 None 值,如下所示:

df['language'] = df['language'].str.replace('None,', '')

然后在语言列为空的任何地方,您可以使用正则表达式插入一个 'None' 值。

df['language'] = df['language'].replace(r'^\s*$', 'None', regex=True)

您可以使用替换方法删除 'None' 和 ','

for i in range(len(f)):
f.loc[i,"language"].replace('None','')
f.loc[i,"language"].replace(',','')
print(f)

你可以这样实现,

f["language"] = f.apply(
    lambda x: ",".join(filter(lambda y: y != "None", x.language.split(","))), axis=1
)

或更好

f["language"] = f.apply(
    lambda x: ",".join([y for y in x.language.split(",") if y != "None"]), axis=1
)