在数据框中重命名元组列名

时间:2017-04-08 04:05:32

标签: python python-3.x pandas

我是python和pandas的新手。我附上了熊猫数据帧的图片, Pic 我需要知道如何从最后一列获取数据以及如何重命名最后一列。

4 个答案:

答案 0 :(得分:6)

您可以使用:

vote

或者:

df = df.rename(columns = {df.columns[-1] : 'newname'})

似乎是解决方案:

df.columns = df.columns[:-1].tolist() + ['new_name']

有缺陷。因为在重命名pandas函数后会返回奇怪的错误。

对于从最后一列获取数据,可以使用按位置iloc选择:

df.columns.values[-1] = 'newname'

重命名后:

s = df.iloc[:,-1]

样品:

s1 = df['newname']
print (s1)
df = pd.DataFrame({'R':[7,8,9],
                   'T':[1,3,5],
                   'E':[5,3,6],
                   ('Z', 'a'):[7,4,3]})

print (df)
   E  T  R  (Z, a)
0  5  1  7       7
1  3  3  8       4
2  6  5  9       3

s = df.iloc[:,-1]
print (s)
0    7
1    4
2    3
Name: (Z, a), dtype: int64
df.columns = df.columns[:-1].tolist() + ['new_name']
print (df)
   E  T  R  new_name
0  5  1  7         7
1  3  3  8         4
2  6  5  9         3
df = df.rename(columns = {('Z', 'a') : 'newname'})
print (df)
   E  T  R  newname
0  5  1  7        7
1  3  3  8        4
2  6  5  9        3
s = df['newname']
print (s)
0    7
1    4
2    3
Name: newname, dtype: int64

答案 1 :(得分:1)

  

从最后一列获取数据

按照其他答案的建议,使用# rename columns def rename(col): if isinstance(col, tuple): col = '_'.join(str(c) for c in col) return col df.columns = map(rename, df.columns) 检索最后一列只有在它确实是最后一列时才能正常工作。

但是,使用像{{1}}这样的绝对列位置并不是一个稳定的解决方案,即如果添加其他列,则代码将会中断。

稳定,通用的方法

首先,确保所有列名都是字符串:

{{1}}
  

重命名最后一列

最好为所有列提供类似的列名,不带括号 - 使代码更易读,数据集更易于使用:

{{1}}

这是由元组命名的所有列的直接转换:

{{1}}

答案 2 :(得分:1)

您可以删除最后一列并使用其他名称重新分配 这不是技术上重命名列。但是,我认为它很直观。

使用@ jezrael的设置

df = pd.DataFrame({'R':[7,8,9],
                   'T':[1,3,5],
                   'E':[5,3,6],
                   ('Z', 'a'):[7,4,3]})

print(df)

   R  T  E  (Z, a)
0  7  1  5       7
1  8  3  3       4
2  9  5  6       3
  

如何获取最后一列?

您可以使用iloc

df.iloc[:, -1]

0    5
1    3
2    6
Name: c, dtype: int64

您可以在提取后重命名该列

df.iloc[:, -1].rename('newcolumn')

0    5
1    3
2    6
Name: newcolumn, dtype: int64

为了在数据框中重命名,您可以采用多种方式。继续我已经开始的主题,即获取列,然后重命名它:

选项1
首先删除iloc[:, :-1]的最后一列 使用join添加上面引用的重命名列

df.iloc[:, :-1].join(df.iloc[:, -1].rename('newcolumn'))

   R  T  E  newname
0  7  1  5        7
1  8  3  3        4
2  9  5  6        3

选项2
或者我们可以使用assign将其放回并保存rename

df.iloc[:, :-1].assign(newname=df.iloc[:, -1])

   R  T  E  newname
0  7  1  5        7
1  8  3  3        4
2  9  5  6        3

答案 3 :(得分:0)

用于更改列名

columns=df.columns.values
columns[-1]="Column name"

用于从dataframe获取数据

您可以使用loc,iloc和ix方法。

loc用于使用label获取值 iloc用于使用索引获取值 ix可以使用索引和标签

来获取数据

了解loc和iloc http://pandas.pydata.org/pandas-docs/stable/dsintro.html#indexing-selection

了解有关索引和选择数据的详情

http://pandas.pydata.org/pandas-docs/stable/indexing.html