首页 > 解决方案 > 如何将同一列中的列附加到以相似名称结尾的不同行中

问题描述

我想转换如下所示的数据框:

time | 0.id | 0.a | 0.b | 1.id | 1.a | 1.b |...

00:00| abc  | 0a  | 0b  | bcd  | 1a  | 1b |...

到以下:

time  | id  | a  | b |...

00:00 | abc | 0a | 0b|...
00:00 | bcd | 1a | 1b|...

我正在使用 python,数据框是 pandas 数据框。

标签: pythonpandas

解决方案


这是wide_to_long在翻转列名之后,所以stubnames是正确的。

df.columns = ['_'.join(x[::-1]) for x in df.columns.str.split('.')]
stubs = pd.unique([x[0] for x in df.columns.str.split('_') if x[0] != 'time'])

pd.wide_to_long(df, i='time', stubnames=stubs, sep='_', j='num').reset_index(1, drop=True)

#        id   a   b
#time              
#00:00  abc  0a  0b
#00:00  bcd  1a  1b

推荐阅读