在 RI 中经常使用dplyr'sselect与everything()
df %>% select(var4, var17, everything())
Run Code Online (Sandbox Code Playgroud)
例如,上面的示例将重新排序数据帧的列,例如var4第一列,var17第二列,随后列出所有剩余的列。这样做的最熊猫方式是什么?处理许多列使得明确地将它们拼写出来并跟踪它们的位置是一件痛苦的事情。
理想的解决方案是简短、可读且可用于 Pandas 链接。
使用Index.difference了没有列表中指定,并倾其所有值:
df = pd.DataFrame({
'G':list('abcdef'),
'var17':[4,5,4,5,5,4],
'A':[7,8,9,4,2,3],
'var4':[1,3,5,7,1,0],
'E':[5,3,6,9,2,4],
'F':list('aaabbb')
})
cols = ['var4','var17']
another = df.columns.difference(cols, sort=False).tolist()
df = df[cols + another]
print (df)
var4 var17 G A E F
0 1 4 a 7 5 a
1 3 5 b 8 3 a
2 5 4 c 9 6 a
3 7 5 d 4 9 b
4 1 5 e 2 2 b
5 0 4 f 3 4 b
Run Code Online (Sandbox Code Playgroud)
编辑:对于链接可以使用DataFrame.pipepass DataFrame:
def everything_after(df, cols):
another = df.columns.difference(cols, sort=False).tolist()
return df[cols + another]
df = df.pipe(everything_after, ['var4','var17']))
print (df)
var4 var17 G A E F
0 1 4 a 7 5 a
1 3 5 b 8 3 a
2 5 4 c 9 6 a
3 7 5 d 4 9 b
4 1 5 e 2 2 b
5 0 4 f 3 4 b
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
113 次 |
| 最近记录: |