更改数据框行名

时间:2016-06-15 19:50:59

标签: python pandas dataframe split rename

我有一个df,看起来像:

BBG.LON.123.S_CAR_ADJ_DPS    343.94325
BBG.LON.436.S_CAR_ADJ_DPS    236.51530

我正在尝试重命名行名称(删除每个行名称的'_CAR_ADJ_DPS'元素并重命名列'id',因此我得到的df看起来像:

           id
BBG.LON.123.S   343.94325
BBG.LON.436.S   236.51530

我尝试使用以下代码并取得成功:

pd.DataFrame(pd.Series(np.unique([row.split('_')[0] for row in df.rows]), name='id'))

如果有人能给我指针,我们将不胜感激。

非常感谢

2 个答案:

答案 0 :(得分:2)

我认为您可以将str.splitrename_axis一起使用(pandas 0.18.0中的新内容):

print (df)
                                   a
BBG.LON.123.S_CAR_ADJ_DPS  343.94325
BBG.LON.436.S_CAR_ADJ_DPS  236.51530

df.index = df.index.str.split('_').str[0]
df = df.rename_axis('id')
#if use pandas bellow 0.18.0
#df.index.name = 'id'

print (df)
                       a
id                      
BBG.LON.123.S  343.94325
BBG.LON.436.S  236.51530

答案 1 :(得分:2)

您可能也会对str.extract感兴趣将这些条目拉出为列:

In [11]: df[0].str.extract('(?P<A>.*)\.(?P<B>.*)\.(?P<C>\d+)\.(?P<D>.)_.*', expand=True)
Out[11]:
     A    B    C  D
0  BBG  LON  123  S
1  BBG  LON  436  S