gpt4 book ai didi

python-3.x - 根据两列中的值 reshape Pandas 数据框

转载 作者:行者123 更新时间:2023-12-01 02:39:27 25 4
gpt4 key购买 nike

在 Python 中,我想使用两个可能的路径搜索数据框中的所有行(数据框由 csv 文件填充)。如果给定行的“组”列为零,则使用“Channel_1”和“Data_1”列将该行的数据移动到新数据帧的下一行。如果给定行的“组”列非零,则获取具有相同“组”列值的所有三行(也由“子组”列标识为 1、2 或 3)并添加到下一个新数据框的行。

从 csv 文件生成数据框的代码:

for name in glob.glob(search_string):
r_file = pd.read_csv(name)

当前数据格式:

Channel_Num    Group    Sub_Group    Data
1000 1 1 100
1001 1 2 105
1002 1 3 110
1003 0 0 200
1004 2 1 400
1005 2 2 405
1006 2 3 410
1007 0 0 500

所需的数据格式:

Group    Channel_1    Data_1    Channel_2   Data_2   Channel_3   Data_3
1 1000 100 1001 105 1002 110
0 1003 200 NaN NaN NaN NaN
2 1004 400 1005 405 1006 410
0 1007 500 NaN NaN NaN NaN

我尝试了 GroupBy 和 pivot_table 方法但没有成功。数据采用所需格式后,还需要针对新组织的数据运行其他计算,但关键是将其采用所需格式。

最佳答案

这更像是使用 diffcumsum 创建附加键后的数据透视问题,所以我使用 pivot_table 和多列展平

df.loc[df.Sub_Group==0,'Sub_Group']=1
df['newkey']=df.Group.diff().ne(0).cumsum()
s=df.pivot_table(index=['Group','newkey'],columns=['Sub_Group'],values=['Channel_Num','Data'],aggfunc='first').sort_index(level=1,axis=1)
s.columns=s.columns.map('{0[0]}_{0[1]}'.format)
s.reset_index(level=0).sort_index()
Out[25]:
Group Channel_Num_1 Data_1 ... Data_2 Channel_Num_3 Data_3
newkey ...
1 1 1000.0 100.0 ... 105.0 1002.0 110.0
2 0 1003.0 200.0 ... NaN NaN NaN
3 2 1004.0 400.0 ... 405.0 1006.0 410.0
4 0 1007.0 500.0 ... NaN NaN NaN
[4 rows x 7 columns]

关于python-3.x - 根据两列中的值 reshape Pandas 数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55458205/

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