gpt4 book ai didi

python - 重新排序 Pandas 数据框中的公共(public)列而不是其他列

转载 作者:行者123 更新时间:2023-12-04 14:36:41 24 4
gpt4 key购买 nike

我有两个包含数百列的数据框。
有些具有相同的名称,有些则没有。
我希望两个数据框以相同的顺序列出具有相同名称的列。
通常,如果这些是唯一的列,我会这样做:

df2 = df2.filter(df1.columns)
但是,由于存在具有不同名称的列,这将消除 df2 中所有 df1 中不存在的列。
如何以相同的顺序对所有常见列进行排序,而不会丢失不常见的列?不相同的必须按原顺序保存。因为我有数百列,所以我无法手动完成,但需要像“过滤器”这样的快速解决方案。请注意,虽然有类似的问题,但它们不涉及“某些列相同,某些列不同”的情况。
例子:
df1.columns = A,B,C,...,Z,1,2,...,1000
df2.columns = Z,K,P,T,...,01,02,...,01000
我想将 df2 的列重新排序为:
df2.columns = A,B,C,...,Z,01,02,...,01000

最佳答案

试试 sets对列名的操作,如 intersectiondifference :
设置 MRE

>>> df1
A B C D
0 2 7 7 5
1 6 8 4 2

>>> df2
C B E F
0 8 7 3 2
1 8 6 5 8
c0 = df1.columns.intersection(df2.columns)
c1 = df1.columns.difference(df2.columns)
c2 = df2.columns.difference(df1.columns)

df1 = df1[c0.tolist() + c1.tolist()]
df2 = df2[c0.tolist() + c2.tolist()]
输出:
>>> df1
B C A D
0 7 7 2 5
1 8 4 6 2

>>> df2
B C E F
0 7 8 3 2
1 6 8 5 8

关于python - 重新排序 Pandas 数据框中的公共(public)列而不是其他列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69303422/

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