我有一个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'))
如果有人能给我指针,我们将不胜感激。
非常感谢
答案 0 :(得分:2)
我认为您可以将str.split
与rename_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