如何创建字典,从数据框的两列是列表?

时间:2020-07-06 17:22:36

标签: python pandas dataframe dictionary

我具有以下数据框,

   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的所有值相加。

1 个答案:

答案 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]}})