python - 重命名 Pandas DataFrame 索引

标签 python pandas dataframe rename

我有一个没有标题的 csv 文件,带有一个 DateTime 索引。我想重命名索引和列名,但使用 df.rename() 仅重命名列名。漏洞?我使用的是 0.12.0 版

In [2]: df = pd.read_csv(r'D:\Data\DataTimeSeries_csv//seriesSM.csv', header=None, parse_dates=[[0]], index_col=[0] )

In [3]: df.head()
Out[3]: 
                   1
0                   
2002-06-18  0.112000
2002-06-22  0.190333
2002-06-26  0.134000
2002-06-30  0.093000
2002-07-04  0.098667

In [4]: df.rename(index={0:'Date'}, columns={1:'SM'}, inplace=True)

In [5]: df.head()
Out[5]: 
                  SM
0                   
2002-06-18  0.112000
2002-06-22  0.190333
2002-06-26  0.134000
2002-06-30  0.093000
2002-07-04  0.098667

最佳答案

rename 方法采用适用于索引 values 的索引字典。
您想重命名为索引级别的名称:

df.index.names = ['Date']

考虑这一点的一个好方法是列和索引是同一类型的对象(IndexMultiIndex),您可以将两者互换通过转置。

这有点令人困惑,因为索引名称与列的含义相似,所以这里有更多示例:

In [1]: df = pd.DataFrame([[1, 2, 3], [4, 5 ,6]], columns=list('ABC'))

In [2]: df
Out[2]: 
   A  B  C
0  1  2  3
1  4  5  6

In [3]: df1 = df.set_index('A')

In [4]: df1
Out[4]: 
   B  C
A      
1  2  3
4  5  6

可以在索引上看到rename,可以改变value 1:

In [5]: df1.rename(index={1: 'a'})
Out[5]: 
   B  C
A      
a  2  3
4  5  6

In [6]: df1.rename(columns={'B': 'BB'})
Out[6]: 
   BB  C
A       
1   2  3
4   5  6

在重命名关卡名称时:

In [7]: df1.index.names = ['index']
        df1.columns.names = ['column']

注意:此属性只是一个列表,您可以将重命名为列表理解/映射。

In [8]: df1
Out[8]: 
column  B  C
index       
1       2  3
4       5  6

关于python - 重命名 Pandas DataFrame 索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19851005/

相关文章:

python - 使用 matplotlib 制作 3D 动画,连接点以创建移动简笔画

python - 使用 Pandas 读取数据并将其设置为 DataFrame 的索引

python - 在非零值之间填充零,保留其他零

python - 如何从 pandas 的 groupby 函数中排除一个值

javascript - 使用 CryptoJS 加密,使用 PyCrypto 解密(将 CryptoJS 调整为 PyCrypto 默认值)

python - 多行字符串连接和写入文本文件

python - 如何选择满足条件的行

python - 在 niftynet 上实现迁移学习

python - 过滤 pandas DataFrame 的重复行

python - Pandas 将函数应用于列表中的多个数据帧