![](/img/trans.png)
[英]Conditionally fill column values based on another columns value in pandas
[英]Pandas/Python: Store values of columns into list based on value in another column
我有以下問題:
我想將 dataframe 中四個不同列 (Age_1 - Age_4) 的值存儲到一個列表中,這取決於第一列“年份”。
年 | 年齡_1 | 2歲 | 3歲 | 4歲 |
---|---|---|---|---|
2000 | 18 | 20 | 25 | 56 |
2000 | 17 | 32 | 24 | 41 |
2001年 | 20 | 26 | 24 | 39 |
...
所以基本上我想要一個列表,然后只包含每年數據集中的所有年齡,例如第一個列表是 list_2000 = [18,20,25,56,17,32,24,41...] ,第二個將是 list_2001 = [20,26,24,39...]
其實我認為這應該很容易做到,但我的嘗試還沒有成功。 所以任何幫助都是值得贊賞的
IIUC,
df.melt('Year',
value_vars=['Age_1', 'Age_2', 'Age_3', 'Age_4'])\
.groupby('Year')['value'].agg(list).to_dict()
IIUC,使用底層 numpy 數組和groupby
,然后用tolist
ravel
為列表:
dic = (
df.set_index('Year').groupby(level='Year')
.apply(lambda d: d.to_numpy().ravel().tolist())
.to_dict()
)
output:
{2000: [18, 20, 25, 56, 17, 32, 24, 41], 2001: [20, 26, 24, 39]}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.