[英]removing a list element from a dataframe
如果它匹配給定的條件,我想刪除一個列表字符串元素。 我的 dataframe 中的“流派”列包含所有可能流派的列表。 我想從整個 Z6A8064B5DF4794555500553C47C55057DZ 中刪除流派條目
removing = df['genres']
for row in removing:
for j in range(len(row)):
print(row[j])
if row[j] == 'روايات وقصص':
print('bingo')
print(row)
print(row[j])
print(j)
print(df['genres'].pop(j))
這段代碼給了我以下錯誤:
3626 # InvalidIndexError. Otherwise we fall through and re-raise
3627 # the TypeError.
3628 self._check_indexing_error(key)
我想要實現的一個例子:這就是我現在得到的
df['genres'][3] = [روايات وقصص, روايات رومانسية, روايات خيالية]
這就是我想要實現的
df['genres'][3] = [ روايات رومانسية, روايات خيالية]
代碼片段應該可以解決您的用例:
df = df[df['genres'] != 'روايات وقصص']
我建議一個小的解決方法:
示例 dataframe:
import pandas as pd
df = pd.DataFrame([['movie_A', 'movie_B', 'movie_C'],
[['action', 'comedy'], ['thriller', 'action'], ['drama']]]).T
df.columns = ['name', 'genres']
將您的流派列擴展到多個列:
df = pd.concat([df.drop(columns='genres'), pd.DataFrame(df['genres'].tolist(),
index=df.index).add_prefix('genre_tmp')], axis=1)
替換您希望排除的流派(本例中的“動作”,假設流派名稱未出現在其他列中):
df.replace({'action': None}, inplace=True)
生成包含所有流派的列作為列表。
genres_list = df[df.columns[df.columns.str.contains('genre_tmp')]].values.tolist()
for entry in genres_list:
if None in entry:
entry.remove(None)
df['genres'] = genres_list
最后,刪除“genres_tmp”列:
df = df[df.columns[~df.columns.str.contains('genre_tmp')]]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.