我有以下问题:
我想将数据帧中四个不同列(Age_1-Age_4(的值存储到一个列表中,该列表取决于第一列"Year"。
年份 | Age_1 | Age_2Age_3 | Age_4 | |
---|---|---|---|---|
2000 | 18 | 20 | 25 | 56 |
2000 | 17 | 32 | 24 | 41|
2001 | 20 | 26 | 24 | 39 |
IIUC,使用底层numpy数组和groupby
,然后用ravel
压平数据,并用tolist
:转换为列表
dic = (
df.set_index('Year').groupby(level='Year')
.apply(lambda d: d.to_numpy().ravel().tolist())
.to_dict()
)
输出:
{2000: [18, 20, 25, 56, 17, 32, 24, 41], 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()