我一直在尝试使用pandas选择列并将其重命名。在R的dplyr中,这很直接,但当涉及到pandas时,我找不到方法。
例如:
import numpy as np
import pandas as pd
np.random.seed(128)
df = pd.DataFrame(np.random.random((5,7)), index=pd.Series(range(1,6), name="week"))
df
0 1 2 ... 4 5 6
week ...
1 0.866637 0.263145 0.131408 ... 0.238924 0.645475 0.790599
2 0.601442 0.334299 0.119428 ... 0.109724 0.602113 0.251285
3 0.299681 0.517116 0.715203 ... 0.102088 0.706524 0.985842
4 0.559079 0.592019 0.741931 ... 0.125672 0.907613 0.573170
5 0.731224 0.301214 0.066628 ... 0.133776 0.655933 0.423496
然后尝试更改一些列名
df.rename(columns={0 : "L",1 : "W",2 : "C1",3 : "C2"},inplace=True)
必须选择感兴趣的列
df.loc[:,'L','C2',4:6]
但是遇到以下代码
df.loc[:,['L','C2',4:6]]
SyntaxError: 无效的语法
使用 R 的 dplyr 只需要一行代码即可。
select(L=0,W=1,C1=2,4:max(ncol(.))
为什么Pandas不直观,如何用Pandas做同样的事情?
预期输出应该如下所示:
week L C2 4 5 6
1 0.8666370428503979 0.041593443747687364 0.23892433469051455 0.6454746004955415 0.7905993520222332
2 0.6014424381923764 0.30913305250605294 0.10972378522258008 0.6021133114626169 0.25128495916256977
3 0.2996812876134075 0.9314494030471506 0.1020881539666203 0.7065238642131539 0.9858423635165023
4 0.5590790688036144 0.8212812049578435 0.12567153920750518 0.9076131583950552 0.5731702972368342
5 0.7312243453837555 0.16307047811396225 0.13377623506787528 0.6559325420882364 0.4234963284022535
df.loc[:,['L', 'C2', 4, 5, 6]]
可以工作,但是df.loc[:,['L', 'C2', 4: 6]]
不行!我不想明确指出最大列数(第六列),因为在每个数据中我可能不知道最大列值,但我知道起始列值。 - Alexander