gpt4 book ai didi

python - 从字典列表创建 DataFrame 时指定列的顺序

转载 作者:太空宇宙 更新时间:2023-11-04 11:18:44 25 4
gpt4 key购买 nike

我有一个方法可以创建一个列表、结果,然后向其附加一个字典行,该行具有键(我最终数据框中的列名)和值(我最终数据框中的行值)。然后我追加该行并将结果集合转换为末尾的 df。例如:

results = []
row = {}
row['Name']="alice"
row['Age']=3
results.append(row)
..reset row, fill in values like above, and append more rows..

df = pd.DataFrame(results)

我遇到的问题是列名称按字母顺序排列,因此 df 看起来像这样:

df.head()
|Age | Name |
|3 | alice |

有没有办法指定列名按我想要的顺序排列(“Name”、“Col”)?实际上我有更多的专栏,所以我不想这样做:

cols = df.columns
cols = cols[:1] + cols[0:1]

然后手动重新排列它。但是,如果我这样做,是只围绕列行移动还是在下面的行中移动?那么,下一行中的“alice”和 3 是否也会像预期的那样在移动列时移动?

最佳答案

columns 属性中指定您想要的顺序列表,DataFrame 将在创建 DataFrame 时对列重新排序。

pd.DataFrame(results, columns=['Name', 'Age'])

Name Age
0 alice 3

或者,DataFrame.from_records 也这样做。

pd.DataFrame.from_records(results, columns=['Name', 'Age'])

Name Age
0 alice 3

如果您正在处理多个列,您始终可以选择执行 columns=['Name', 'Age', *(row.keys() - {'Name', 'Age'}) ] 假设您不关心其余列的顺序。

我在这篇文章中写过关于从记录构建 DataFrame 的文章:Convert list of dictionaries to a pandas DataFrame


另一个想法,如果顺序不正确,请修复列。

if df.columns.get_loc('Age') < df.columns.get_loc('Name'):
df.insert(df.columns.get_loc('Age'), 'Name', df.pop('Name'))

如果 Name 最初插入在 Age 之后,这将在 Age 之前插入 Name。

关于python - 从字典列表创建 DataFrame 时指定列的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56447817/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com