更改数据框行名称
Posted
技术标签:
【中文标题】更改数据框行名称【英文标题】:Change dataframe row names 【发布时间】:2016-10-17 02:31:10 【问题描述】:我有一个看起来像这样的 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'))
接下来我可以尝试什么?
【问题讨论】:
【参考方案1】:我认为您可以将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
【讨论】:
【参考方案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
【讨论】:
以上是关于更改数据框行名称的主要内容,如果未能解决你的问题,请参考以下文章