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

两个pandas数据框中共有的列的列表

廖琨
2023-03-14
问题内容

我正在考虑对每个具有大量列的数据帧进行合并操作。不想结果有两个具有相同名称的列。我正在尝试查看两个框架之间共有的列名列表:

import pandas as pd

a = [{'A': 3, 'B': 5, 'C': 3, 'D': 2},{'A': 2,  'B': 4, 'C': 3, 'D': 9}]
df1 = pd.DataFrame(a)
b = [{'F': 0,  'M': 4,  'B': 2,  'C': 8 },{'F': 2,  'M': 4, 'B': 3, 'C': 9}]
df2 = pd.DataFrame(b)

df1.columns
>> Index(['A', 'B', 'C', 'D'], dtype='object')
df2.columns
>> Index(['B', 'C', 'F', 'M'], dtype='object')

(df2.columns).isin(df1.columns)
>> array([ True,  True, False, False])

我该如何在Index对象上操作该NumPy布尔数组,使其仅返回公用列的列表?


问题答案:

使用numpy.intersect1dintersection

a = np.intersect1d(df2.columns, df1.columns)
print (a)
['B' 'C']

a = df2.columns.intersection(df1.columns)
print (a)
Index(['B', 'C'], dtype='object')

后一种选择的替代语法:

df1.columns & df2.columns


 类似资料:
  • 问题内容: 我肯定在这里错过了一些简单的事情。尝试在熊猫中合并具有相同列名的两个数据框,但右侧的数据框具有一些左侧没有的列,反之亦然。 我试着加入外部联接: 但这产生了: 我还指定了一个要连接的单列(例如on =“ id”),但是它复制了除“ id”以外的所有列,例如attr_1_x,attr_1_y,这并不理想。我也将整个列列表(有很多)传递给了“ on”: 产生: 我想念什么?我想获得一个带有

  • 问题内容: 当我使用这种语法时,它将创建一个序列,而不是将列添加到新的数据帧(总和)中。请帮忙。 我的代码: 我的数据(在数据框df中):(当前除了预算外,其他所有内容-实际的,我要创建差异列吗? 问题答案: 我认为您已经误解了某些python语法,以下代码执行了两项任务: 因此,在您的代码中就好像您在做的一样: 后者为df创建了一个新列: 顺便说一句,您不应将其用作变量名称,因为它会覆盖内置的s

  • 问题内容: 我有2个数据框,如下所示: 最后,我想得到的是: 因此,我想比较两个数据帧,我想查看第一数据帧(对于列A和B)的哪些行与第二数据帧(列K和L)相同,并在第一数据帧的列D上分配1。 我可以使用for循环,但是输入大量条目会很慢。 任何线索或建议将不胜感激。 问题答案: 这是我解决的方法:

  • 问题内容: 我有多个pandas数据框,它们的列数可能不同,这些列的数量通常在50到100之间。我需要创建一个最终列,该列只是所有列的连接。基本上,该列第一行中的字符串应该是所有列第一行中的字符串的总和(并置)。我在下面编写了循环,但我觉得可能有更好的更有效的方法来执行此操作。有关如何执行此操作的任何想法 问题答案: 解决方案,但输出是,因此必须转换为和: 另一个具有function的解决方案,但

  • 问题内容: 假设我有两个这样的DataFrame: 我想创建一个新的DataFrame,它由在两个矩阵中具有匹配的“ S”和“ T”条目的行以及dfA的prob列和dfB的knstats列组成。结果应类似于以下内容,并且顺序相同很重要: 问题答案: 您可以合并它们,以便: 删除NA行:

  • 问题内容: 我有一个熊猫数据框: 其中包括系列对象: 指出了一些命令: 每个字典具有相同的键: 上面是tweeter API的tweet中字段的命令之一(一部分)。我想根据这些命令构建数据框架。 当我尝试直接制作数据框时,每行仅获得一列,并且此列包含整个字典: 当我尝试使用from_dict()创建数据框时,得到相同的结果: 接下来,我尝试了列表理解,但返回了错误: 当我从单行创建数据框时,它几乎