我想按特定列对多列数据框进行排序,但首先需要将类型从object
更改为int
。如何在保留原始列位置的同时更改此特定列的数据类型?更改熊猫数据帧特定列的数据类型
2
A
回答
2
您可以通过排序列由sort_values
,转换为int
由astype
使用reindex
:
df = pd.DataFrame({'A':[1,2,3],
'B':[4,5,6],
'colname':['7','3','9'],
'D':[1,3,5],
'E':[5,3,6],
'F':[7,4,3]})
print (df)
A B D E F colname
0 1 4 1 5 7 7
1 2 5 3 3 4 3
2 3 6 5 6 3 9
print (df.colname.astype(int).sort_values())
1 3
0 7
2 9
Name: colname, dtype: int32
print (df.reindex(df.colname.astype(int).sort_values().index))
A B D E F colname
1 2 5 3 3 4 3
0 1 4 1 5 7 7
2 3 6 5 6 3 9
print (df.reindex(df.colname.astype(int).sort_values().index).reset_index(drop=True))
A B D E F colname
0 2 5 3 3 4 3
1 1 4 1 5 7 7
2 3 6 5 6 3 9
如果因为None
或坏的数据使用to_numeric
第一解决方案不工作:
df = pd.DataFrame({'A':[1,2,3],
'B':[4,5,6],
'colname':['7','3','None'],
'D':[1,3,5],
'E':[5,3,6],
'F':[7,4,3]})
print (df)
A B D E F colname
0 1 4 1 5 7 7
1 2 5 3 3 4 3
2 3 6 5 6 3 None
print (pd.to_numeric(df.colname, errors='coerce').sort_values())
1 3.0
0 7.0
2 NaN
Name: colname, dtype: float64
2
df['colname'] = df['colname'].astype(int)
工作时从float
值改为int
atleast。
相关问题
- 1. 大熊猫据帧行更改类型
- 2. 更改为特定的列的D型细胞在大熊猫数据帧
- 3. 熊猫 - 列的数据帧
- 4. 熊猫to_json更改数据类型
- 5. 转换熊猫数据帧类型
- 6. 跨列,熊猫数据帧
- 7. 更改熊猫据帧
- 8. 数据帧列数据 - 熊猫 - python
- 9. 熊猫据帧更新列
- 10. 熊猫数据帧:在数据帧
- 11. 选择特定指数,从熊猫列对数据帧
- 12. 熊猫:独特的数据帧
- 13. 如何更改熊猫数据框中特定列的文本?
- 14. 转换类型的字典列表的熊猫数据帧
- 15. 熊猫在迭代数据帧的同时改变数据帧
- 16. Matplotlib Boxplot和熊猫数据帧数据类型
- 17. 熊猫数据帧逗号,注意分隔为数据类型
- 18. 熊猫:使用数据类型过滤数据帧
- 19. 熊猫改变索引数据类型
- 20. 做的熊猫数据帧
- 21. 熊猫:更改过滤的数据帧列
- 22. 在大熊猫多指标数据框更改特定列值
- 23. 将熊猫数据帧列表合并到一个熊猫数据帧中
- 24. 熊猫:无法更改列数据类型
- 25. 熊猫:更改列数据类型产生警告
- 26. 熊猫read_sql数据类型
- 27. 运行熊猫数据帧的更新
- 28. 数据在数据帧的熊猫
- 29. 列表熊猫数据帧列表
- 30. 排序熊猫数据帧的列
是posiible使用'df ['colname'] = df ['colname']。astype(int)'? – jezrael
你尝试过搜索这个:http://stackoverflow.com/search?tab=votes&q=pandas%20convert%20to%20int有很多相关的问题。它也很大程度上取决于当前数据的组成,例如,如果缺少值,则无法将int转换为int,因为'NaN'不能用'int'表示。 – EdChum
或者只需要将其转换为int排序然后转换回'string'('object')? – jezrael