如何根据列条件重命名 pandas DataFrame 索引
How to rename a pandas DataFrame index based on a column condition
我有这样一个 DataFrame:
import pandas as pd
df = pd.DataFrame(data= {"x": [1,2,3,4],"y":[5,6,7,8],"i":["a.0","a.1","a.0","a.1"]}).set_index("i")
df
输出:
x y
i
a.0 1 5
a.1 2 6
a.0 3 7
a.1 4 8
我想根据列条件重命名索引:
df.loc[df["y"]>6].rename(index=lambda x: x+ ">6" )
给我的是什么:
x y
i
a.0>6 3 7
a.1>6 4 8
我用 inplace=True 试过了,但是没用
df.loc[df["y"]>6].rename(index=lambda x: x+ ">6" , inplace=True )
我只能通过重置索引、通过应用更改 i 列值并再次设置索引来完成它:
df1 = df.reset_index()
df1.loc[df1["y"]>6, "i"] = df1.loc[df1["y"]>6, "i"].apply(lambda x: x+ ">6" )
df1.set_index("i", inplace=True)
df1
输出:
x y
i
a.0 1 5
a.1 2 6
a.0>6 3 7
a.1>6 4 8
但这太复杂了。
你知道有没有更简单的方法?
试试这个怎么样?
import numpy as np
df.index=np.where(df['y']>6, df.index+'>6', df.index)
我有这样一个 DataFrame:
import pandas as pd
df = pd.DataFrame(data= {"x": [1,2,3,4],"y":[5,6,7,8],"i":["a.0","a.1","a.0","a.1"]}).set_index("i")
df
输出:
x y
i
a.0 1 5
a.1 2 6
a.0 3 7
a.1 4 8
我想根据列条件重命名索引:
df.loc[df["y"]>6].rename(index=lambda x: x+ ">6" )
给我的是什么:
x y
i
a.0>6 3 7
a.1>6 4 8
我用 inplace=True 试过了,但是没用
df.loc[df["y"]>6].rename(index=lambda x: x+ ">6" , inplace=True )
我只能通过重置索引、通过应用更改 i 列值并再次设置索引来完成它:
df1 = df.reset_index()
df1.loc[df1["y"]>6, "i"] = df1.loc[df1["y"]>6, "i"].apply(lambda x: x+ ">6" )
df1.set_index("i", inplace=True)
df1
输出:
x y
i
a.0 1 5
a.1 2 6
a.0>6 3 7
a.1>6 4 8
但这太复杂了。 你知道有没有更简单的方法?
试试这个怎么样?
import numpy as np
df.index=np.where(df['y']>6, df.index+'>6', df.index)