我通常重命名索引和/或列以跟踪数据框中的布局(不是列中的值,而是列本身)。我知道的唯一方法是明确设置属性。
np.random.seed(10); a = np.random.randint(0, 20, (3, 2))
df = pd.DataFrame(a)
df.columns.name = 'A'
df.index.name = 'B'
df
A 0 1
B
0 9 4
1 15 0
2 17 16
是否有DataFrame
或Series
方法执行此操作以启用方法链接(即看起来像df.rename(column='A', index='B').[...other method calls]
)?我希望.rename()
中有这个功能,但它似乎没有这个选项。
答案 0 :(得分:0)
我不相信这种方法存在。但是嘿,如果你需要的话,加上它。
import numpy as np
import pandas as pd
class DF(pd.DataFrame):
def rename_columns(self,name):
self.columns.name = name
return self
def rename_index(self,name):
self.index.name = name
return self
np.random.seed(10); a = np.random.randint(0, 20, (3, 2))
df = DF(a)
df.rename_columns('egg').rename_index('bacon')
df
答案 1 :(得分:0)
这种方法确实存在。
使用df.rename_index('new_column_name', axis=0, inplace=True)
重命名df.index
。 (将axis=0
更改为axis=1
,以重命名df.columns
。)
在Pandas版本1之前的某个时候,功能df.rename
和df.rename_index
具有重叠的功能。现在,df.rename_index
用于重命名整个df.index
(或df.columns
),而df.rename
用于更改索引中的特定条目(或名称或特定列)。 / p>
Series
对象中存在名称相似的方法,但是它们的工作方式略有不同。
答案 2 :(得分:0)
这是一篇旧文章,但我遇到了同样的问题,看来issue opened in the pandas repo已经完成。
rename_axis
对象上现在有一个Dataframe
方法,现在可以将名称赋予索引级别,并且可以通过方法链接来使用(我强烈建议阅读{{ 3}},有关方法链接)。
np.random.seed(10); a = np.random.randint(0, 20, (3, 2))
df = pd.DataFrame(a)
df
0 1
0 9 4
1 15 0
2 17 16
df.rename_axis(columns='A', index='B')
A 0 1
B
0 9 4
1 15 0
2 17 16
所生成的数据帧可以进一步用于方法链接,例如:
df.rename_axis(columns='A', index='B').stack('A')
B A
0 0 9
1 4
1 0 15
1 0
2 0 17
1 16