gpt4 book ai didi

python-3.x - python Pandas 数据框: single column to multiple columns based on values

转载 作者:行者123 更新时间:2023-12-05 05:46:19 25 4
gpt4 key购买 nike

我是 Pandas 的新手。我正在尝试使用 Groupby 根据索引值将单列拆分为多列。下面是写的程序。

import pandas as pd
data = [(0,1.1),
(1,1.2),
(2,1.3),
(0,2.1),
(1,2.2),
(0,3.1),
(1,3.2),
(2,3.3),
(3,3.4)]
df = pd.DataFrame(data, columns=['ID','test_data'])
df = df.groupby('ID',sort=True).apply(lambda g: pd.Series(g['test_data'].values))

print(df)
df=df.unstack(level=-1).rename(columns=lambda x: 'test_data%s' %x)
print(df)

我必须使用 unstack(level=-1) 因为当我们的列大小不均匀时,追星族和系列会存储如下所示的结果。

ID   
0 0 1.1
1 2.1
2 3.1
1 0 1.2
1 2.2
2 3.2
2 0 1.3
1 3.3
3 0 3.4
dtype: float64

拆包后得到的结果如下

    test_data0  test_data1  test_data2
ID
0 1.1 2.1 3.1
1 1.2 2.2 3.2
2 1.3 3.3 NaN
3 3.4 NaN NaN

但我期待的是

   test_data0 test_data1  test_data2
ID
0 1.1 2.1 3.1
1 1.2 2.2 3.2
2 1.3 NAN 3.3
3 NAN NAN 3.4

让我知道除了 groupby 之外是否还有更好的方法。

最佳答案

如果您的数据框按您显示的那样排序,这将起作用

df['num_zeros_seen'] = df['ID'].eq(0).cumsum()

#reshape the table
df = df.pivot(
index='ID',
columns='num_zeros_seen',
values='test_data',
)

print(df)

输出:

num_zeros_seen    1    2    3
ID
0 1.1 2.1 3.1
1 1.2 2.2 3.2
2 1.3 NaN 3.3
3 NaN NaN 3.4

关于python-3.x - python Pandas 数据框: single column to multiple columns based on values,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71212321/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com