gpt4 book ai didi

python - 在 Pandas 中同时重命名和选择列

转载 作者:太空宇宙 更新时间:2023-11-04 09:26:23 26 4
gpt4 key购买 nike

我一直在尝试选择列并使用 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: invalid syntax

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

最佳答案

IIUC,你需要:

df.loc[:, ['L', 'C2'] + [i for i in range(4, len(df.columns))]]

输出:

             L        C2         4         5         6
week
1 0.156464 0.197580 0.885015 0.991281 0.478843
2 0.744064 0.082760 0.694133 0.487298 0.026765
3 0.371953 0.015918 0.494651 0.965285 0.348584
4 0.528609 0.287760 0.788897 0.664366 0.094318
5 0.316789 0.211593 0.921653 0.005872 0.174702


说明:

您要查找的部分:

[i for i in range(4, len(df.columns))]

给出:

[4, 5, 6]

在此之后,是关于在 Python 中添加列表:

['L', 'C2'] + [i for i in range(4, len(df.columns))]

关于python - 在 Pandas 中同时重命名和选择列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57445703/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com