簡體   English   中英

如何根據列條件重命名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 )

我只能通過重置索引,通過apply更改i-column-values並再次設置索引來完成它:

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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM