python - 按另一个数据框中的两列过滤数据框
问题描述
我需要一些关于熊猫问题的提示。
我有以下 DataFrame,df1,其中包含我需要保留在输出数据框中的日期名称:
name date column_1 column_11
Anne 2018-01-01 some info1 some info11
John 2018-01-01 some info1 some info11
Mark 2018-02-01 some info1 some info11
Ethan 2018-03-01 some info1 some info11
Anne 2018-04-01 some info1 some info11
Ethan 2018-04-01 some info1 some info11
我有另一个 DataFrame,df2,它包含我的数据样本中的所有名称和日期:
name date column_2 column_22
Bob 2018-01-01 some info2 some info22
Bob 2018-01-01 some info2 some info22
Anne 2018-01-01 some info2 some info22
John 2018-01-01 some info2 some info22
Mark 2018-02-01 some info2 some info22
Mark 2018-02-01 some info2 some info22
Ethan 2018-03-01 some info2 some info22
Anne 2018-04-01 some info2 some info22
Anne 2018-04-01 some info2 some info22
Ethan 2018-04-01 some info2 some info22
Carl 2018-01-01 some info2 some info22
Joe 2018-01-01 some info2 some info22
而且,作为输出,我需要一个像 df1 这样的 DataFrame,但所有列都在 df2 中。
请注意, df1 和 df2 除了我显示的列之外还有其他列,因此它们具有不同的信息。问题是,我想要 df2 中的列,但只需要 df1 中显示的日期中的名称。
示例输出为:
name date column_2 column_22
Anne 2018-01-01 some info2 some info22
John 2018-01-01 some info2 some info22
Mark 2018-02-01 some info2 some info22
Mark 2018-02-01 some info2 some info22
Ethan 2018-03-01 some info2 some info22
Anne 2018-04-01 some info2 some info22
Anne 2018-04-01 some info2 some info22
Ethan 2018-04-01 some info2 some info22
笔记:
正在做:
df = df2.merge(df1)
没用
笔记2:
df1 包含来自 df2 的聚合和过滤数据,这就是为什么 df1 中的行数少于 df2 中的行数。我只想在 df2 中保留那些包含 df1 中的名称和日期的行。
这些解决方案都不起作用,所以我认为这种解释可能有助于获得正确的分析器。
解决方案
我将使用 intermediate 逐步执行此操作DataFrames
。这效率较低,但它会让您更深入地了解正在发生的事情。
仅取姓名和日期df1
:
df_key = df1.loc[:, ["name", "date"]]
使用键表 and的内连接(在本文中称为自然连接) df2
,它将仅生成名称和日期匹配的记录:
df_out_1 = df_2.merge(
df_key,
how="inner",
left_on=["name", "date"],
right_on=["name", "date"]
]
从结果连接中挑选出你想要的列,你就完成了:
df_out_2 = df_out_1.loc[:, ["name", "date", "column_2", "column_22"]]
推荐阅读
- c# - 使用 PowerAPI 的 Win32 互操作 - PowerIsSettingRangeDefined() 是未定义/缺失的函数
- system - 如何构建翻译系统
- php - 验证 php 对象的字段是否为空值的更好方法
- python - Apache Airflow ImportError:无法导入名称'_psutil_linux'
- firebase - 如何在 Firestore 中获取每个用户或客户的帐单详细信息?
- java - netbeans 调试错误 - nbjpdastart 不支持嵌套的“modulepath”元素
- material-ui - material-ui-next 表格超出容器宽度且不可滚动
- python-3.x - 从导入的模块中设置/修改函数中使用的变量
- c - 最适合基于前缀的搜索的数据结构
- java - 无法加载驱动程序类:com.mysql.jdbc.Driver Spring Boot