我有一个Pandas数据框中的字典列。
srs_tf = pd.Series([{'dried': 1, 'oak': 2},{'fruity': 2, 'earthy': 2},{'tones': 2, 'oak': 4}])
srs_b = pd.Series([2,4,6])
df = pd.DataFrame({'tf': srs_tf, 'b': srs_b})
df
tf b
0 {'dried': 1, 'oak': 2} 2
1 {'fruity': 2, 'earthy': 2} 4
2 {'tones': 2, 'oak': 4} 6
这些词典代表着葡萄酒描述中单词的频率(例如输入词典:{'savory': 1, 'dried': 3, 'thyme': 1, 'notes'...)。我需要从这个词典列创建一个输出词典,其中包含所有输入词典的键,并将它们映射到这些键出现的输入词典数量。例如,单词“dried”是850个输入词典中的一个键,因此在输出词典中为{...'dried': 850...}。
我想尝试使用数据帧的.apply()方法,但我认为我使用不正确。
def worddict(row, description_counter):
for key in row['tf'].keys():
if key in description_counter.keys():
description_counter[key] += 1
else:
description_counter[key] = 1
return description_counter
description_counter = {}
output_dict = df_wine_list.apply(lambda x: worddict(x, description_counter), axis = 1)
有几点需要注意。我认为我的轴应该是0而不是1,但当我尝试这样做时会出现以下错误:KeyError: ('tf','发生于索引Unnamed: 0')
当我使用轴=1时,我的函数返回的是一列相同的字典,而不是单个字典。