更改数据框行名称

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.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

【讨论】:

【参考方案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

【讨论】:

以上是关于更改数据框行名称的主要内容,如果未能解决你的问题,请参考以下文章

如何重塑数据框并将重复列转换为数据框行?

从其他数据框行和列位置找到相应的值

数据框行/列计算[单元依赖]

由其他数据框行填充

将列表附加为数据框行

Pyspark SQL拆分数据框行的记录[重复]