【Python】【pandas】合并两个dataframe:df1和df2,保留df1和df2的所有列,按照df2的列排序在前,df1中未包含在df2的列在后

合并df1df2时保留df1df2的所有列,并且按照df2的列顺序排序,可以按照以下步骤进行操作:

import pandas as pd

# 示例数据
data1 = {'F': [1, 2, 3],
         'A': [1, 2, 3],
         'B': [4, 5, 6],
         'E': [4, 5, 6]}
df1 = pd.DataFrame(data1)

data2 = {'C': [7, 8, 9],
         'A': [10, 11, 12],
         'B': [13, 14, 15],
         'D': [16, 17, 18]}
df2 = pd.DataFrame(data2)

# 获取目标列顺序
columns_order = list(df2.columns) + list(df1.columns)
columns_order = [x for i, x in enumerate(columns_order) if x not in columns_order[:i]]

# 合并df1和df2
merged_df = pd.concat([df1, df2], ignore_index=True)

# 按照df2的列顺序重新排列列
merged_df = merged_df.reindex(columns=columns_order)

print(merged_df)

结果如下:

     C   A   B     D    F    E
0  NaN   1   4   NaN  1.0  4.0
1  NaN   2   5   NaN  2.0  5.0
2  NaN   3   6   NaN  3.0  6.0
3  7.0  10  13  16.0  NaN  NaN
4  8.0  11  14  17.0  NaN  NaN
5  9.0  12  15  18.0  NaN  NaN

通过以上步骤,我们成功按照df2的列顺序合并了df1df2,并保留了两个DataFrame的所有列,包括B列。在合并后的结果中,df1的列保留了原始的顺序,而df2的列按照df2的顺序进行了排序。缺失的部分用NaN进行填充。

灵感来自:

要删除列表中重复的元素,只保留先出现的元素,可以使用列表推导式和集合(Set)来实现。以下是示例代码:

original_list = [1, 2, 3, 2, 4, 1, 5, 3]

# 使用列表推导式和集合来删除重复元素,只保留先出现的
unique_list = [x for i, x in enumerate(original_list) if x not in original_list[:i]]

print(unique_list)

输出结果为:

[1, 2, 3, 4, 5]

在这个例子中,我们使用列表推导式和集合来删除重复元素。在列表推导式中,我们遍历原始列表original_list,并使用切片original_list[:i]来获取当前元素之前的子列表。然后,使用条件x not in original_list[:i]来判断当前元素是否在子列表中出现过。如果没有出现过,则将该元素添加到新的列表unique_list中。通过这种方式,我们可以只保留先出现的元素,并删除重复的元素。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值