熊猫wide_to_long,id变量需要唯一标识每个

2024-10-01 15:28:33 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有这样一个数据帧

ID,Time1,Value1,Time2,Value2,Time3,Value3
1,2,1.1,3,1.2,4,1.3
1,5,2.1,6,2.2,7,2.3

预期的数据帧是这样的

^{pr2}$

如果行有唯一的id,pd.wide_to_long在这种情况下工作得很好。在

df = pd.wide_to_long(df, ['Time',Value],'ID','value', sep='', suffix='.+')\
    .reset_index()\
    .sort_values(['ID', 'Time'])\
    .drop('value', axis=1)\
    .dropna(how='any')

但在这种情况下,如果行的ID不是唯一的,该如何修复呢


Tags: to数据iddftimevalue情况long
1条回答
网友
1楼 · 发布于 2024-10-01 15:28:33

诀窍是使用^{}作为唯一值的列:

df = (pd.wide_to_long(df.reset_index(), ['Time','Value'],i='index',j='value')
        .reset_index(drop=True)
        .sort_values(['ID', 'Time'])
        .dropna(how='any')
        )
print (df)
   ID  Time  Value
0   1     2    1.1
2   1     3    1.2
4   1     4    1.3
1   1     5    2.1
3   1     6    2.2
5   1     7    2.3

细节

^{pr2}$

相关问题 更多 >

    热门问题