我具有以下数据框,
text num w wei
0 he is good 0 [a, b] [1, 2]
1 hello 1 [c, b] [3, 2]
2 here 4 [a, c] [1, 3]
我想变得像这样
text num w wei dic_w_wei
0 he is good 0 [a, b] [1, 2] {"a": 1, "b":2}
1 hello 1 [c, b] [3, 2] {"c": 3, "b":2}
2 here 4 [a, c] [1, 3] {"a": 1, "c":3}
dic_w_wei是w和wei之上的新列。如何获得此新列。
现在结束时,我希望从此数据框中获得像这样的字典
{"a": 2, "b": 4, "c": 6}
其中,我将a,b和c的所有值相加。
答案 0 :(得分:2)
尝试使用apply
;
df['dic_w_wei'] = df[['w','wei']].apply(lambda x: dict(zip(*x)),axis=1)
print(df)
text num w wei dic_w_wei
0 he is good 0 [a, b] [1, 2] {'a': 1, 'b': 2}
1 hello 1 [c, b] [3, 2] {'c': 3, 'b': 2}
2 here 4 [a, c] [1, 3] {'a': 1, 'c': 3}
一旦有了此列,您就可以做到:
pd.DataFrame(df['dic_w_wei'].tolist()).sum().astype(int).to_dict()
{'a': 2, 'b': 4, 'c': 6}
以下示例df:
df = pd.DataFrame({'text': {0: 'he is good', 1: 'hello', 2: 'here'},
'num': {0: 0, 1: 1, 2: 4},
'w': {0: ['a', 'b'], 1: ['c', 'b'], 2: ['a', 'c']},
'wei': {0: [1, 2], 1: [3, 2], 2: [1, 3]}})