基于str.contains()熊猫更改索引

时间:2020-05-02 21:08:17

标签: python pandas dataframe

嗨,我想根据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索引?

谢谢

2 个答案:

答案 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