如何替换熊猫细胞?

时间:2019-08-17 11:40:15

标签: python-3.x pandas

我有一个用以下标头从CSV创建的Pandas数据框:

podcast_name,user_name,description,image,ratings,category,itunes_link,rss,email,latest_date,listener_1,listener_2,listener_3,listener_4,listener_5,listener_6,listener_7,listener_8,listener_9,listener_10,listener_11,listener_12,listener_13,listener_14,listener_15,listener_16,listener_17,listener_18

此数据帧是从多个文件加载的,并且已清除重复项:

all_files = glob.glob(os.path.join("data/*.csv"))
df = pandas.concat((pandas.read_csv(f) for f in all_files))
df.drop_duplicates(keep=False, inplace=True)

现在,我想检查并替换category中的某些值。例如,我有关键字dict:

categories = {
    "Comedy": ["Comedy Interviews", "Improv", "Stand-Up"],
    "Fiction": ["Comedy Fiction", "Drama", "Science Fiction"]
}

所以我想检查category中的值是否等于列表中的值之一。例如,我在Improv列中有caterogy行,并且我想用Improv替换Comedy

老实说,我不知道该怎么做。

1 个答案:

答案 0 :(得分:1)

创建助手字典并replace

#swap key values in dict
#http://stackoverflow.com/a/31674731/2901002
d = {k: oldk for oldk, oldv in categories.items() for k in oldv}
print (d)
{'Comedy Interviews': 'Comedy', 'Improv': 'Comedy', 
 'Stand-Up': 'Comedy', 'Comedy Fiction': 'Fiction',
 'Drama': 'Fiction', 'Science Fiction': 'Fiction'}

df['category'] = df['category'].replace(d)