繁体   English   中英

如何在 Pandas 中将特定列拆分为新列?

[英]How can I split a specific column to new columns in Pandas?

我想用逗号将“rest”列拆分为新列并删除“R=”。 并将 +1 添加到“关节”列。 我能怎么做?

df
     joints           rest
          0  R=0,0,1,1,1,1
          3  R=0,0,1,1,1,1
         42  R=0,0,1,1,1,1
         45  R=0,0,1,1,1,1

我想这样做:

joints U1 U2 U3 R1 R2 R3
1      0  0  1  1  1  1
4      0  0  1  1  1  1
43     0  0  1  1  1  1
46     0  0  1  1  1  1

对于更动态的重命名列名称,使用带有 lambda 的函数,对于新列,使用带有expand=True Series.str.split并通过DataFrame.join分配回原始DataFrame.join

f = lambda x: f'U{x+1}' if x < 3 else f'R{x-2}' 
df1 = (df.join(df.pop('rest').str.split('=')
                             .str[1]
                             .str.split(',', expand=True)
                             .rename(columns=f))
          .assign(joints = df['joints'] + 1))
print (df1)
   joints U1 U2 U3 R1 R2 R3
0       1  0  0  1  1  1  1
1       4  0  0  1  1  1  1
2      43  0  0  1  1  1  1
3      46  0  0  1  1  1  1

这是一种方法。 由于没有为列命名指定标准,因此在这种情况下我只是硬编码:

cols = ['U1', 'U2', 'U3', 'R1', 'R2', 'R3']
out = (df.rest.str.lstrip('R=')
              .str.split(',', expand=True)
              .rename(columns=dict(zip(range(len(cols)), cols)))
out['joints'] = df.joints.add(1)

  U1 U2 U3 R1 R2 R3  joints
0  0  0  1  1  1  1       1
1  0  0  1  1  1  1       4
2  0  0  1  1  1  1      43
3  0  0  1  1  1  1      46

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM