嗨,我想根据str.contains的结果更改数据框的索引。
一个简单的例子
import pandas as pd
df= pd.DataFrame({'Product':['Banana_1','Banana_2','Orange_a','Orange_b'],
'Value':[5.10,5.00,2.10,2.00]})
df2 = df[df['Product'].str.contains('Banana')]
print(df2)
有没有一种方法可以使用df2过滤器更改df1索引?
谢谢
答案 0 :(得分:1)
您可以根据如下所示的单元格值来控制索引,如下所述(我认为):
In [28]: df.index = [i if 'Banana' in df.iloc[i,0] else i+len(df) for i in range(len(df))]
In [29]: df
Out[29]:
Product Value
0 Banana_1 5.1
1 Banana_2 5.0
6 Orange_a 2.1
7 Orange_b 2.0
答案 1 :(得分:1)
这是您需要的:
In [1230]: index_list = df2.index.tolist()
In [1236]: index_map = {}
In [1237]: for i in index_list:
...: index_map[i] = 'myindex'
...:
In [1250]: df.rename(index=index_map, inplace=True)
In [1251]: df
Out[1251]:
Product Value
myindex Banana_1 5.1
myindex Banana_2 5.0
2 Orange_a 2.1
3 Orange_b 2.0