系列有相同的DataFrame.rename(columns = newcolumns)
吗?我想象的东西
def rename(self, name = None):
self.name = name
编辑:我不确定为什么这收到了一个downvote。我认为这是一个合理的想法。我更喜欢以功能性的方式编程,尽可能避免像myseries.name = "newname"
这样的陈述。这种编程风格通常在Pandas API中得到很好的支持,(例如在大多数函数中默认为inplace=False
),我只是想知道是否有一种方法可以以我刚刚错过的功能方式更新系列名称。 (否则我会提交功能请求)。
从最近的documentation开始,Series.rename
方法在通过标量时完全符合你的要求;返回一个新名称的新系列。
以下内容在某个时候是正确的,但不再相关。
我自己偶然发现了这个问题,并且发现API没有涵盖以方法链方式更改Series.name
的用例非常令人沮丧。
我发现了两个尴尬的解决方法。
# this returns a series where series.name == df.index.name, not what we want.
df.apply(lambda row: series-to-scalar(row),axis=1)
您可以使用DataFrame.apply
转换数据框,让func
返回由新名称索引的单个值系列,然后使用[]
访问该列。
df.apply(lambda row: pd.Series(series-to-scalar(row),index=['new name']),axis=1)['new name']
或者向数据框添加一个名为new name的新列,然后使用[]
访问该列。
df.assign(**{'new name': lambda df: df.apply(lambda row: row-to-scalar(row),axis=1)})['new name']
Series.pipe
创建一个新系列,并使用新名称创建原始系列。
sr.pipe(lambda sr: pd.Series(sr,name='new name'))
希望这可以帮助。祝福功能请求好运。
IIUC你需要为Pandas.Series重命名函数,pd.Series有两个重命名方法:rename和rename_axis但它们都不满足你的意愿。您可以在常用样式中更改系列的名称:
e = pd.Series(np.arange(10), name='test')
In [95]: e
Out[95]:
0 0
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
Name: test, dtype: int32
e.name = 'new'
In [97]: e
Out[97]:
0 0
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
Name: new, dtype: int32
但是如果你需要功能样式,你需要在将来的重新定位中请求该功能(它似乎很容易实现,只需为.rename
方法添加一个关键字)。