簡體   English   中英

通過一個鍵獲取多鍵dict的總和並將其添加到Python中的datfarme列?

[英]Get the sum of a multikey dict by one key and add it to a datfarme column in Python?

我有一個 dataframe 和一個字典如下:

import pandas as pd
import numpy as np
df = pd.DataFrame(np.array([[1, 2], [4, 5]]),columns=['a', 'b'])
df
   a  b
0  1  2
1  4  5

dict
{(0, 'A', 1): 1, (0, 'A', 2): 2, (1, 'B', 1): 3, (1, 'B', 2): 4}

我試圖通過字典的第一個鍵獲得總和,並將結果作為新列添加到我的 dataframe 中。

這是我到目前為止所擁有的,但我認為必須有一種更有效的方法來做到這一點。

total_by_1st={}
for (x, _, _), v in dict.items():
    if x in total_by_1st:
       total_by_1st[x] += v
    else:
       total_by_1st[x]=v

total_by_1st
{0: 3, 1: 7}
df['c'] = df.index.map(total_by_1st)
df
   a  b  c
0  1  2  3
1  4  5  7

我試圖通過字典的第一個鍵得到總和,並將結果作為新列添加到我的 dataframe

您可以在級別 0 上轉換為系列和總和:

df['new'] = pd.Series(d).sum(level=0)

print(df)

   a  b  new
0  1  2    3
1  4  5    7

其中d是存儲字典的變量的名稱。 請注意,您不應將變量命名為與內置函數相同的變量( d或類似的名稱,而不是dict

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM