python - 使用 DataFrame.sort_index(axis=1) 时出现意外顺序。最后列出的第一列
问题描述
我有一个像这样填充的示例 DataFrame:
Alpha Beta Gamma Delta Epsilon
Date
2017-01-02 0.854046 NaN 0.681606 0.883779 0.680304
2017-01-01 0.573784 0.407917 0.446668 0.463504 0.136830
2017-01-03 0.556100 0.849009 0.389748 NaN 0.777201
当我按axis = 1(列标题)排序时,'Alpha'列被放在最后一个位置:
df_sorted = df1.sort_index(axis=1)
print df_sorted
输出:
Beta Delta Epsilon Gamma Alpha
Date
2017-01-02 NaN 0.883779 0.680304 0.681606 0.854046
2017-01-01 0.407917 0.463504 0.136830 0.446668 0.573784
2017-01-03 0.849009 NaN 0.777201 0.389748 0.556100
谁能解释列的字母数字排序?
谢谢!
解决方案
也许您在某些列名前面有空格,使用 @rahlf23 设置并进行一些修改:
df = pd.DataFrame([['2017-01-02', ' 0.854046', np.nan, '0.681606', '0.883779', '0.680304'],
['2017-01-01', '0.573784', '0.407917', '0.446668', '0.463504', '0.136830'],
['2017-01-03', '0.556100', '0.849009', '0.389748', np.nan, '0.777201']],
columns=['Date', ' Beta', ' Gamma', ' Delta', 'Alpha', ' Epsilon']).set_index('Date')
df.sort_index(axis=1)
输出:
Beta Delta Epsilon Gamma Alpha
Date
2017-01-02 0.854046 0.681606 0.680304 NaN 0.883779
2017-01-01 0.573784 0.446668 0.136830 0.407917 0.463504
2017-01-03 0.556100 0.389748 0.777201 0.849009 NaN
要识别这一点,您可以使用df.to_dict()
:
{' Beta': {'2017-01-01': '0.573784',
'2017-01-02': ' 0.854046',
'2017-01-03': '0.556100'},
' Delta': {'2017-01-01': '0.446668',
'2017-01-02': '0.681606',
'2017-01-03': '0.389748'},
' Epsilon': {'2017-01-01': '0.136830',
'2017-01-02': '0.680304',
'2017-01-03': '0.777201'},
' Gamma': {'2017-01-01': '0.407917',
'2017-01-02': nan,
'2017-01-03': '0.849009'},
'Alpha': {'2017-01-01': '0.463504',
'2017-01-02': '0.883779',
'2017-01-03': nan}}
要修复,您可以使用 .str.strip()
df.columns = df.columns.str.strip()
df.sort_index(axis=1)
输出:
Alpha Beta Delta Epsilon Gamma
Date
2017-01-02 0.883779 0.854046 0.681606 0.680304 NaN
2017-01-01 0.463504 0.573784 0.446668 0.136830 0.407917
2017-01-03 NaN 0.556100 0.389748 0.777201 0.849009
推荐阅读
- vue.js - 动态路由器链接将 *slash* 更改为 %2F
- python - Python中的while循环和逻辑运算符 - 它是如何工作的?
- elasticsearch - nifi 将文本文件转换为 json
- sql-server - 波斯字符的 NVARCHAR SQL 类型问题
- javascript - Safari 浏览器上的 Light Gallery 插件问题
- node.js - bundle.js 加载速度很慢
- javascript - 如何从 url 获取 Json 然后添加到 html 中的表格?
- jenkins - 詹金斯的建筑在舞台上永远暂停,“没有步骤”
- openstreetmap - 尝试获取地名并将其添加到来自大型 osm 文件的输出 csv 文件
- html - 放置一个