python - pandas 列名分配中的大写优先

标签 python pandas

Pandas 中的列名分配优先使用大写字母而不是小写字母是否有原因?

示例:

dframe = DataFrame({'city':['Alma','Brian Head', 'Fox Park'],
                    'altitude':[3158,3000,2762]})

返回一个 DataFrame,其中列的顺序为海拔、城市。

鉴于:

dframe = DataFrame({'City':['Alma','Brian Head', 'Fox Park'],
                    'altitude':[3158,3000,2762]})

返回一个 DataFrame,其中的列按城市、海拔顺序排列。

这是 pandas 特定的还是一般的 Python 行为?

最佳答案

您实际上并没有问这个问题,但我假设存在一个关于如何保留原始顺序的隐含问题?如果是这样,有以下三种方法:

1) 相同的基本字典构造函数,但包装在 collections.OrderedDict 中(感谢 @shx2 的更正):

from collections import OrderedDict
df1 = pd.DataFrame( OrderedDict([ ('city',['Alma','Brian Head', 'Fox Park']),
                                  ('altitude',[3158,3000,2762]) ]))

2) 非字典构造函数,您可以分别指定数据数组和列名称,但是,这本质上需要以行为中心的条目,而不是像字典构造函数那样以列为中心:

lst = [['Alma','Brian Head','Fox Park'],
       [3158,3000,2762]]
df2 = pd.DataFrame( map(list, zip(*lst)),
                    columns = ['city','altitude'] )

3)最简单的方法可能只是在创建数据帧后指定顺序(感谢@EdChum捕获原始帖子中的错误):

df3 = df[['city','altitude']]

测试这三个结果是否相同:

In [149]: all(df1==df2)
Out[149]: True

In [150]: all(df1==df3)
Out[150]: True

关于python - pandas 列名分配中的大写优先,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30555959/

相关文章:

python - 使用 'exec' 函数在解释器 Shell 中运行脚本

python - 在长 if-elseif-else 语句中使用 return (Python)

python - 根据 Pandas 中的字符串列表过滤掉行

python - 读取 excel 文件时出现 Pandas 和 xlrd 错误

python - 使用 pd.isin() 检查一列中的值是否在另一列的列表中

python - 如何使用 pandas python 合并数据帧?

python - 在 python 中获取 gif 的每秒帧数?

python - 获取前一个元素的最pythonic方式

python - 连接两个数据帧并从索引创建多索引

python - 使用 get_inline_instances 覆盖添加权限?