我是python和pandas的新手。我附上了熊猫数据帧的图片,我需要知道如何从最后一列获取数据以及如何重命名最后一列。重命名数据框中的元组列名称
回答
您可以使用:
df = df.rename(columns = {df.columns[-1] : 'newname'})
或者:
df.columns = df.columns[:-1].tolist() + ['new_name']
这似乎解决方案:
df.columns.values[-1] = 'newname'
是马车。因为重命名后熊猫函数返回奇怪的错误。
对于从最后一列获取数据,可以使用通过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'
很多的选择...好的答案+1 :-) – piRSquared
好,只要确保你看到它:-)。我一直希望你投你的良心。你也是。我希望你知道我完全尊重这一点。在这种情况下,我喜欢解决方案,因为它代表了我的想法。我会保持原样。希望我们很快会看到更多的问题。 – piRSquared
对于量变到质变的列名
columns=df.columns.values
columns[-1]="Column name"
对于从数据帧提取数据
您可以ü se loc,iloc和ix方法。
禄是使用标签 ILOC是使用索引 IX可以获取使用指数数据和标签
了解禄和ILOC http://pandas.pydata.org/pandas-docs/stable/dsintro.html#indexing-selection
了解更多关于索引读取数值读取值,选择数据
嗯,我测试你的解决方案,它返回奇怪的keyerror - 看到我的答案底部。它如何为你工作? 'df = pd。DataFrame({'R':[7,8,9], 'T':[1,3,5], 'E':[5,3,6], ('Z','a' ):[7,4,3]}) print(df)'和'df.columns.values [-1] ='newname'' 's = df ['newname']' 'print(s )'? – jezrael
我以为你只想改变列名称以便显示。我为我的误会道歉。 @jezrael已经给出了适当的解决方案。 –
从最后一列
检索使用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)
如果元组是字符串和浮点数的混合,请改为使用它:“col ='{} _ {}'。format(col [0],col [1])” – Superpronker
@Superpronker采纳了任何元组长度 – miraculixx
可以删除最后一列,并用不同的名称重新分配它。
这在技术上不是重命名该列。不过,我觉得它很直观。
使用@ 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
为了将数据帧中的重命名,你可以做一个很大的数的方式。通过iloc[:, :-1]
使用join
下降的最后一列
选项1
开始添加的重命名的列:要继续,我已经开始,即取列主题,然后将其重命名上述
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
- 1. 使用数据框标题/名称重命名列名称
- 2. 使用其数据框名称重命名列表中的数据框列
- 3. 重命名数据框中的变量名称序列
- 4. 重命名具有重复列名称的Pandas数据框中的列?
- 5. 重命名postgresql数据库中的列名称
- 6. 根据csv重命名火花数据帧的列名称
- 7. 重命名数据库名称 - mysql
- 8. 重命名未命名的列大熊猫数据框
- 9. ServiceStack V4元数据索引页面 - 重命名操作名称
- 10. 当从数据框中选择时重命名列名
- 11. Java:DOM如何从名称列表中重命名节点名称
- 12. 在命名元组列表中搜索命名元组
- 13. 在数据框中重命名ID
- 14. 命名的列重命名
- 15. 大熊猫党团和重命名数据框列名
- 16. 重命名jar包名称
- 17. 重命名数据框中所有列的子集
- 18. 如何使用向量重命名R数据框中的列以指示OLD列名称?
- 19. MS Access,命名参数和列名称
- 20. 重命名A R数据框
- 21. 在geokettle中重命名字段名称
- 22. 基于部分名称从数据框中提取3列组
- 23. 如何在python中用文件名重命名数据框?
- 24. 按列名称设置数据框
- 25. 按名称删除数据框列
- 26. 如何重命名/更新Jhipster中实体的列名称?
- 27. 当在Sql Server中重命名列时的流言表名称
- 28. 根据列名重命名CSV
- 29. 在实体框架中重命名列
- 30. 使用对象名称重命名存储在列表中的数据框的变量
我倒是投了这个问题,如果你提供的实际数据,而不是数据的图片。 – piRSquared