当前位置: 首页 > 面试题库 >

熊猫合并-如何避免重复的列

应嘉容
2023-03-14
问题内容

我正在尝试在两个数据帧之间合并。每个数据帧都有两个索引级别(日期,客户)。在列中,例如,某些列在两者之间匹配(货币,日期)。

索引合并这些内容的最佳方法是什么,但不要采用两个副本的货币和日期。

每个数据框都是90列,所以我试图避免用手将所有内容写出来。

df:                 currency  adj_date   data_col1 ...
date        cusip
2012-01-01  XSDP      USD      2012-01-03   0.45
...

df2:                currency  adj_date   data_col2 ...
date        cusip
2012-01-01  XSDP      USD      2012-01-03   0.45
...

如果我做:

dfNew = merge(df, df2, left_index=True, right_index=True, how='outer')

我懂了

dfNew:              currency_x  adj_date_x   data_col2 ... currency_y adj_date_y
date        cusip
2012-01-01  XSDP      USD      2012-01-03   0.45             USD         2012-01-03

谢谢!…


问题答案:

您可以算出仅在一个DataFrame中的列,并使用它来选择合并中列的子集。

cols_to_use = df2.columns.difference(df.columns)

然后执行合并(请注意,这是一个索引对象,但是它有一个方便的tolist()方法)。

dfNew = merge(df, df2[cols_to_use], left_index=True, right_index=True, how='outer')

这将避免合并中的任何列冲突。



 类似资料:
  • 如何将两个熊猫DataFrames合并到两个具有不同名称的列上,并保留其中一个列? 这提供了一个像这样的数据帧 但是很明显,我正在合并和,所以它们是相同的。我想让它看起来像这样。有什么干净的方法可以做到这一点吗? 我唯一能想到的方法是在合并之前将列重新命名为相同的列,或者在合并之后删除其中一个列。如果熊猫自动掉落其中一只,我会很高兴,或者我可以做类似的事情

  • 我使用for循环将学生详细信息添加到ArrayList。当我给第二个学生提供详细信息时,它会覆盖第一个数据。螺柱类 将数据添加到ArrayList的主类。 输出:第二个数据[2,2]后的实际输出辊数[1]。预期输出应为卷号: A1姓名: F1 L1性别:男性年龄: 11体育赛事:标枪 报名号:A2姓名:F2 L2性别:女年龄:14体育项目:100米跑 报名号:A3姓名:F3 L3性别:男性年龄:1

  • 我有一个简单的项目,该项目将个人信息提供给数据库(sqlite),现在我想避免插入重复值(按名称),我不能做什么?谢谢你们

  • 问题内容: 我有一个数据帧,其中有几行几乎是彼此重复的,除了一个值。我的目标是将这些行合并或“合并”为单行,而无需对数值进行求和。 这是我正在使用的示例: 这就是我想要的: 我不想汇总“收入”列的原因是因为我的表是在多个时间段内进行数据透视的结果,其中“收入”只是最终多次列出,而不是每个“ Use_Case”都有不同的值。 解决这个问题的最佳方法是什么?我已经研究过该功能,但是我仍然不太了解它。

  • 钱箱类: 商户类: 输入数据: 我的任务 计算每个商家的总金额并返回商家列表 我正在尝试使用Stream API解决这个任务。并编写了以下代码: 结果 但显然,流返回四个对象,而不是所需的两个对象。我意识到,地图(第二行)为每个cashBoxId创建了四个对象。而且我不知道如何通过进行过滤,也不知道如何获得没有重复的结果。

  • 我试图在对文件进行一些编辑后将csv保存到文件夹中。 每次我使用< code > PD . to _ csv(' C:/Path of file . CSV ')时,CSV文件都有一个单独的索引列。我想避免将索引打印成csv格式。 我试过了: 要保存文件。。。 但是,我仍然得到了不需要的索引列。保存文件时如何避免这种情况?