我想将python中的DataFrame中索引的名称重置为与第一个数字相同的名称。
例如,如果我的DataFrame是:
Sample 1 Sample 2
2706 retinopathy positive retinopathy negative
2707 retinopathy negative retinopathy negative
2708 retinopathy positive retinopathy positive
我希望它成为:
Sample 1 Sample 2
706 retinopathy positive retinopathy negative
707 retinopathy negative retinopathy negative
708 retinopathy positive retinopathy positive
我尝试过:
ret_metadata.rename(index={2706: '706'})
但是,我想更改许多不同行的索引名称,也许是在循环中。有人知道我该怎么做吗?
非常感谢您!
答案 0 :(得分:1)
您可以像在this answer中那样使用字符串操作,方法是将其转换为字符串,然后将其切片,然后将其转换回int。
df
Sample_1 Sample_2
2706 retinopathy_positive retinopathy_negative
2707 retinopathy_negative retinopathy_negative
2708 retinopathy_positive retinopathy_positive
(如果您不关心索引是数字,则可以跳过第二次强制转换)
df.index=df.index.astype(str).str[1:].astype(int)
df
Sample_1 Sample_2
706 retinopathy_positive retinopathy_negative
707 retinopathy_negative retinopathy_negative
708 retinopathy_positive retinopathy_positive
df.index
Int64Index([706, 707, 708], dtype='int64')
答案 1 :(得分:0)
如果您更喜欢数学解决方案(不转换为字符串),则可以执行以下操作:
import math
# ...
df.index = df.index % (pow(10, int(math.log(df.index, 10))))
...当您始终要删除第一位数字时。
如果要删除除最后三位以外的所有数字,它将变得更加简单:
df.index = df.index % 1000