我是 python 和 pandas 的新手。我附上了一张 pandas 数据框的图片:
我需要知道如何从最后一列获取数据以及如何重命名最后一列。
您可以使用:
df = df.rename(columns = {df.columns[-1] : 'newname'})
或者:
df.columns = df.columns[:-1].tolist() + ['new_name']
看来解决方案:
df.columns.values[-1] = 'newname'
有越野车。因为重命名 pandas 函数后会返回奇怪的错误。
iloc
:
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
df.columns.values[-1] = 'newname'
s = df['newname']
print (s)
>KeyError: 'newname'
从最后一列获取数据
按照其他答案的建议,使用
df.iloc[:,-1]
检索最后一列仅当它确实是最后一列时才可以正常工作。
但是,使用像
-1
这样的绝对列位置并不是一个稳定的解决方案,即如果您添加其他列,您的代码将会崩溃。
稳定、通用的方法
首先,确保所有列名称都是字符串:
# rename columns
df.columns = [str(s) for s in df.columns]
# access column by name
df['(vehicle_id, reservation_count)']
重命名最后一列
最好为所有列使用相似的列名称,并且其中不带括号 - 让您的代码更具可读性并且数据集更易于使用:
# access column by name
df['vehicle_id_reservation_count`]
这是对由元组命名的所有列的直接转换:
# 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)
您可以删除最后一列并使用不同的名称重新分配它。
从技术上讲,这并不是重命名该列。不过,我认为它很直观。
使用@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
用于更改列名称
columns=df.columns.values
columns[-1]="Column name"
用于从数据框中获取数据
您可以使用 loc、iloc 和 ix 方法。
loc 用于使用标签获取值 iloc 用于使用索引获取值 ix 可以使用索引和标签来获取数据
了解 loc 和 iloc http://pandas.pydata.org/pandas-docs/stable/dsintro.html#indexing-selection
了解有关索引和选择数据的更多信息