亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Python Pandas從眾多列表中創建獨特的數據框

Python Pandas從眾多列表中創建獨特的數據框

皈依舞 2021-05-14 16:10:03
嗨,我想創建一個數據幀,在每個列中存儲一個唯一變量及其平均值。目前,我有一個包含2列的數據框。一個具有名稱列表,而另一個具有單個值。我想將該值與列表中的所有名稱相關聯,并最終找到所有名稱的平均值。這是我擁有的數據:Df1:names_col                    cost_col[milk, eggs, cookies]          3[water, milk, yogurt]          5 [cookies, diaper, yogurt]      7這就是我要的:Df2:names_col             avg_cost_colmilk                       4eggs                       3cookies                    5water                      5yogurt                     6diaper                     7我考慮過以某種方式對所有行進行套用,或使用set()從每個列表中刪除重復項,但我不確定。任何幫助將不勝感激
查看完整描述

3 回答

?
幕布斯6054654

TA貢獻1876條經驗 獲得超7個贊

關于矢量化解決方案的建議


ndf = pd.DataFrame({'a':np.repeat(df.cost_col.values, df.names_col.str.len()),

                    'b':np.concatenate(df.names_col.values)})

產量


    a   b

0   3   milk

1   3   eggs

2   3   cookies

3   5   water

4   5   milk

5   5   yogurt

6   7   cookies

7   7   diaper

8   7   yogurt

然后就是普通groupy+mean


ndf.groupby('b').mean()


        a

b   

cookies 5

diaper  7

eggs    3

milk    4

water   5

yogurt  6


查看完整回答
反對 回復 2021-05-18
?
慕哥9229398

TA貢獻1877條經驗 獲得超6個贊

IIUC將您的列表弄平(嵌套)


pd.DataFrame(data=df.cost_col.repeat(df.names_col.str.len()).values,index=np.concatenate(df.names_col.values)).mean(level=0)

Out[221]: 

         0

milk     4

eggs     3

cookies  5

water    5

yogurt   6

diaper   7


查看完整回答
反對 回復 2021-05-18
?
POPMUISE

TA貢獻1765條經驗 獲得超5個贊

Set()是刪除重復項的最簡單答案。

* list_name表示法用于擴展/解壓縮列表。


l = [["milk", "eggs", "cookies"], 

    ["water", "milk", "yogurt"], 

    ["cookies", "diaper", "yogurt"]]

c = set([*l[0], *l[1], *l[2]])

{'cookies', 'eggs', 'diaper', 'yogurt', 'water', 'milk'}

并將其用作您的熊貓列名稱。您可以根據需要使用list()將其轉換回列表


查看完整回答
反對 回復 2021-05-18
  • 3 回答
  • 0 關注
  • 180 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號