我是 Python 和 Pandas 的新手,我想知道是否有更好的方法来替换 Series 中的值。这是我的代码:
import pandas as pd
rank = pd.Series(data=[161.140890, 146.989804, 133.589100, 131.220764, 124.506911],
index=['SB', 'EKDKQ', 'APD', 'DIS', 'MDR'])
print(rank)
这是我的输出:
SB 161.140890
EKDKQ 146.989804
APD 133.589100
DIS 131.220764
MDR 124.506911
dtype: float64
我想用 1,2,3 这样的序列号替换这些值...... 我可以用这个代码:
x = 1
for i, v in rank.items():
rank.loc[i] = x
x += 1
print(rank)
我得到:
SB 1.0
EKDKQ 2.0
APD 3.0
DIS 4.0
MDR 5.0
dtype: float64
这很好,但它看起来不像“Pandas”代码。我的代码看起来更像 C++。那里的熊猫专家可以告诉我如何以熊猫的方式做到这一点吗?
range
/numpy.arange
并直接赋值:
rank[:] = range(1, rank.size+1)
# or
rank[:] = np.arange(1, rank.size+1)
输出:
SB 1.0
EKDKQ 2.0
APD 3.0
DIS 4.0
MDR 5.0
dtype: float64
(rank.reset_index().drop(columns=[0]).reset_index().set_index("index")+1).rename(columns={"level_0":"rank"})["rank"]
#
index
SB 1
EKDKQ 2
APD 3
DIS 4
MDR 5
Name: rank, dtype: int64
创造力是关键:)