python - pandas.concat 中的列顺序

标签 python pandas concat

我这样做:

data1 = pd.DataFrame({ 'b' : [1, 1, 1], 'a' : [2, 2, 2]})
data2 = pd.DataFrame({ 'b' : [1, 1, 1], 'a' : [2, 2, 2]})
frames = [data1, data2]
data = pd.concat(frames)
data


   a    b
0   2   1
1   2   1
2   2   1
0   2   1
1   2   1
2   2   1

数据列的顺序是字母顺序。为什么会这样? 以及如何保持原来的顺序?

最佳答案

您正在从字典中创建 DataFrame。字典是无序的,这意味着键没有特定的顺序。所以

d1 = {'key_a': 'val_a', 'key_b': 'val_b'}

d2 = {'key_b': 'val_b', 'key_a': 'val_a'}

(可能)相同。

除此之外,我假设 pandas 默认对字典的键进行降序排序(不幸的是,我在文档中没有找到任何提示来证明该假设)导致您遇到的行为。

因此,基本动机是对 DataFrame 中的列进行重新排序/重新排序。你可以这样做as follows :

import pandas as pd

data1 = pd.DataFrame({ 'b' : [1, 1, 1], 'a' : [2, 2, 2]})
data2 = pd.DataFrame({ 'b' : [1, 1, 1], 'a' : [2, 2, 2]})
frames = [data1, data2]
data = pd.concat(frames)

print(data)

cols = ['b' , 'a']
data = data[cols]

print(data)

关于python - pandas.concat 中的列顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39046931/

相关文章:

python - Keras > 在具有不同 python 版本的不同机器上使用经过训练的模型

使用 set 的 Python 唯一列表

python - 如何访问用 Python 编写的 FORTRAN 函数?

java - 为流中已有的每个元素添加一个元素到流的末尾

python - 类型错误 : 'dict' object does not support indexing thrown on second instance of this query

python - 计算同一列之间的差异,由python中的另一列分组的连续行

python - 从 SciPy 稀疏 Coo 矩阵填充 Pandas SparseDataFrame

Python 3 pandas 使用字符串与正则表达式标记数据框中的数据

excel - 多列的文本到列 - Excel VBA

javascript - 用于递归展平结果的 JS 数组串联