重命名数据框的行和列

Posted

技术标签:

【中文标题】重命名数据框的行和列【英文标题】:Rename the row and columns of a dataframe 【发布时间】:2022-01-20 09:07:57 【问题描述】:

我使用 python 提取了一个 NC 文件,在处理数据后,最终输出是一个带有 (199, 314) 的数组。我将数组转换为数据框,但行名和列名(索引)分别从零开始到 199 和 314。

from netCDF4 import Dataset
import numpy as np
import pandas as pd
data = Dataset('GolestanM.nc', 'r')
dims = data.dimensions
ndims = len(dims)
vars = data.variables
nvars = len(vars)
attrs = data.ncattrs
lon = data.variables['lon'][:]
lat = data.variables['lat'][:]
t = data.variables['time'][496]
fire = data.variables['FireMask'][496,:,:]                           
dataset = pd.DataFrame(fire)

但是,我想使用以下格式重命名这些索引: 列:名字 53.7042 然后 +0.0083 直到名字达到 56.3208

[0-->53.7042, 1-->53.7.25, ... , 314-->53.3208]

行:名字 38.1125 然后 -0.0083 直到名字达到 36.4625

[0-->38.1125, 1-->38.1042, ... , 199-->36.4625]

要做到这一点,我有下面的代码:

dataset = dataset.rename(index=0: "38.1125")
dataset = dataset.rename(columns=0: "53.7042")
dataset = dataset.rename(index = lambda x: x + (0.0083),
                         columns = lambda x: x + (0.0083))

但是这样做会给我以下错误:

TypeError: can only concatenate str (not "float") to str

谁能帮我解决这个问题。

【问题讨论】:

【参考方案1】:

想法是 lambda 函数中的多个 x(列或索引名称):

#sample data
dataset = pd.DataFrame(0, index=range(10), columns=range(10))


dataset = dataset.rename(index = lambda x: 38.1125 - 0.0083 * x ,
                          columns = lambda x: 53.7042  + 0.0083* x)

print (dataset)
         53.7042  53.7125  53.7208  53.7291  53.7374  53.7457  53.7540  \
38.1125        0        0        0        0        0        0        0   
38.1042        0        0        0        0        0        0        0   
38.0959        0        0        0        0        0        0        0   
38.0876        0        0        0        0        0        0        0   
38.0793        0        0        0        0        0        0        0   
38.0710        0        0        0        0        0        0        0   
38.0627        0        0        0        0        0        0        0   
38.0544        0        0        0        0        0        0        0   
38.0461        0        0        0        0        0        0        0   
38.0378        0        0        0        0        0        0        0   

         53.7623  53.7706  53.7789  
38.1125        0        0        0  
38.1042        0        0        0  
38.0959        0        0        0  
38.0876        0        0        0  
38.0793        0        0        0  
38.0710        0        0        0  
38.0627        0        0        0  
38.0544        0        0        0  
38.0461        0        0        0  
38.0378        0        0        0  

【讨论】:

感谢您的帮助,但您的建议无效。第一列和第一行正确更改。然而其他人重命名为 1.0083, 2.0083 而不是 0.0083 添加到名字。 @babakasadolah - 你现在可以测试了吗?

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

在 R 中,使用 rle(运行长度编码)的结果,包括命名的行和列标题

数据透视表列重命名

Datatable中的某行某列能不能添加一个下拉框的控件

通过添加前缀 -in R 重命名数据框的列

重命名 node.js 续集时间戳列

如何使用列表重命名熊猫中的列