如何使用Python根据另一个DataFrame中的行选择DataFrame中的行

向日葵1114

我有两个数据帧,df1如下所示:

id  year    CalendarWeek    DayName interval    counts
1   2014    1   sun 10:30   3
1   2014    1   sun 11:30   4
1   2014    2   wed 12:00   5
1   2014    2   fri 9:00    2
2   2014    1   sun 13:00   3
2   2014    1   sun 14:30   1
2   2014    1   mon 10:30   2
2   2014    2   wed 14:00   3
2   2014    2   fri 15:00   5
3   2014    1   thu 16:30   2
3   2014    1   thu 17:00   1
3   2014    2   sat 12:00   2
3   2014    2   sat 13:30   3

df2如下所示:

id  year    CalendarWeek    DayName interval    NewCounts
1   2014    1   sun 10:00   2
1   2014    1   sun 10:30   4
1   2014    1   sun 11:30   5
1   2014    2   wed 10:30   6
1   2014    2   wed 12:00   3
1   2014    2   fri 8:30    1
1   2014    2   fri 9:00    2
2   2014    1   sun 12:30   3
2   2014    1   sun 13:00   4
2   2014    1   sun 14:30   4
2   2014    1   mon 9:00    35
2   2014    1   mon 10:30   1
2   2014    2   wed 12:30   23
2   2014    2   wed 14:00   4
2   2014    2   fri 15:00   3
3   2014    1   thu 14:30   1
3   2014    1   thu 15:00   3
3   2014    1   thu 16:30   34
3   2014    1   thu 17:00   5
3   2014    2   sat 12:00   3
3   2014    2   sat 13:30   4
3   2014    2   sat 14:00   2

我想在df2中拾取与df1中的列id,year,CalendarWeek,DayName和interval匹配的所有行。我想要的结果应如下所示:

id  year    CalendarWeek    DayName interval    NewCounts
1   2014    1   sun 10:30   4
1   2014    1   sun 11:30   5
1   2014    2   wed 12:00   3
1   2014    2   fri 9:00    2
2   2014    1   sun 13:00   4
2   2014    1   sun 14:30   4
2   2014    1   mon 10:30   1
2   2014    2   wed 14:00   4
2   2014    2   fri 15:00   3
3   2014    1   thu 16:30   34
3   2014    1   thu 17:00   5
3   2014    2   sat 12:00   3
3   2014    2   sat 13:30   4

在Python中,如何根据另一个数据框中的列选择数据框中的这些特定行?

谢谢!

埃德·楚姆

执行amerge并将列列表传递给param on,默认的合并类型是'inner'仅匹配两个df中都存在值的位置:

In [2]:

df.merge(df1, on=['id','year','CalendarWeek','DayName','interval'])
Out[2]:
    id  year  CalendarWeek DayName interval  counts  NewCounts
0    1  2014             1     sun    10:30       3          4
1    1  2014             1     sun    11:30       4          5
2    1  2014             2     wed    12:00       5          3
3    1  2014             2     fri     9:00       2          2
4    2  2014             1     sun    13:00       3          4
5    2  2014             1     sun    14:30       1          4
6    2  2014             1     mon    10:30       2          1
7    2  2014             2     wed    14:00       3          4
8    2  2014             2     fri    15:00       5          3
9    3  2014             1     thu    16:30       2         34
10   3  2014             1     thu    17:00       1          5
11   3  2014             2     sat    12:00       2          3
12   3  2014             2     sat    13:30       3          4

如果您的“ id”列是索引,则必须重置两个df上的索引,以使其成为df内的列,这是因为如果您指定on列列表,则内部联接将产生错误的结果,并且还指定left_index=Trueright_index=True

In [4]:

df.merge(df1, on=['year','CalendarWeek','DayName','interval'], left_index=True, right_index=True)
Out[4]:
    year  CalendarWeek DayName interval  counts  NewCounts
id                                                        
1   2014             1     sun    10:30       3          2
1   2014             1     sun    10:30       3          4
1   2014             1     sun    10:30       3          5
1   2014             1     sun    10:30       3          6
1   2014             1     sun    10:30       3          3
1   2014             1     sun    10:30       3          1
1   2014             1     sun    10:30       3          2
1   2014             1     sun    11:30       4          2
1   2014             1     sun    11:30       4          4
1   2014             1     sun    11:30       4          5
1   2014             1     sun    11:30       4          6
1   2014             1     sun    11:30       4          3
1   2014             1     sun    11:30       4          1
1   2014             1     sun    11:30       4          2
1   2014             2     wed    12:00       5          2
1   2014             2     wed    12:00       5          4
1   2014             2     wed    12:00       5          5
1   2014             2     wed    12:00       5          6
1   2014             2     wed    12:00       5          3
1   2014             2     wed    12:00       5          1
1   2014             2     wed    12:00       5          2
1   2014             2     fri     9:00       2          2
1   2014             2     fri     9:00       2          4
1   2014             2     fri     9:00       2          5
1   2014             2     fri     9:00       2          6
1   2014             2     fri     9:00       2          3
1   2014             2     fri     9:00       2          1
1   2014             2     fri     9:00       2          2
2   2014             1     sun    13:00       3          3
2   2014             1     sun    13:00       3          4
..   ...           ...     ...      ...     ...        ...
2   2014             2     fri    15:00       5          4
2   2014             2     fri    15:00       5          3
3   2014             1     thu    16:30       2          1
3   2014             1     thu    16:30       2          3
3   2014             1     thu    16:30       2         34
3   2014             1     thu    16:30       2          5
3   2014             1     thu    16:30       2          3
3   2014             1     thu    16:30       2          4
3   2014             1     thu    16:30       2          2
3   2014             1     thu    17:00       1          1
3   2014             1     thu    17:00       1          3
3   2014             1     thu    17:00       1         34
3   2014             1     thu    17:00       1          5
3   2014             1     thu    17:00       1          3
3   2014             1     thu    17:00       1          4
3   2014             1     thu    17:00       1          2
3   2014             2     sat    12:00       2          1
3   2014             2     sat    12:00       2          3
3   2014             2     sat    12:00       2         34
3   2014             2     sat    12:00       2          5
3   2014             2     sat    12:00       2          3
3   2014             2     sat    12:00       2          4
3   2014             2     sat    12:00       2          2
3   2014             2     sat    13:30       3          1
3   2014             2     sat    13:30       3          3
3   2014             2     sat    13:30       3         34
3   2014             2     sat    13:30       3          5
3   2014             2     sat    13:30       3          3
3   2014             2     sat    13:30       3          4
3   2014             2     sat    13:30       3          2

[96 rows x 6 columns]

因此要重置索引就可以了df = df.reset_index(0),对于其他df同样如此,合并之后,您可以将索引设置回id,这样:

merged = df.merge(df1, on=['id','year','CalendarWeek','DayName','interval'])
merged = merged.reset_index()

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

根据另一个 Dataframe 中的条件删除 Dataframe 中的行

来自分类Dev

Python Pandas根据另一个列中的总数从另一个dataFrame中选择值

来自分类Dev

遍历Pandas DataFrame行-根据另一个系列中的值更改系列值?

来自分类Dev

如何在基于另一个DataFrame的列上删除DataFrame中的行?

来自分类Dev

如何在基于另一个DataFrame的列上删除DataFrame中的行?

来自分类Dev

从一个DataFrame中选择行,具体取决于另一个中的值

来自分类Dev

DataFrame中的新列基于另一个DataFrame中的行和列

来自分类Dev

从分组框中的另一个DataFrame的每一行创建DataFrame?

来自分类Dev

如何根据另一个表的值删除一个表中的行

来自分类Dev

根据另一个表中的数据从表中选择行

来自分类Dev

根据另一个表中的数据从表中选择行

来自分类Dev

MySql根据另一个表中的MAX值选择一个表中的所有行

来自分类Dev

如何根据另一个表中的值访问表中的一行?

来自分类Dev

根据 R 中另一个数据框中的行选择数据框中的行

来自分类Dev

选择不在另一个表中的行

来自分类Dev

根据另一个表中的关键字从一个表中选择行

来自分类Dev

根据另一个表中的选定行从一个表中选择数据

来自分类Dev

使用另一个DataFrame从Python中的DataFrame删除记录

来自分类Dev

仅根据特定列检查一个DataFrame中的行是否存在于另一DataFrame中

来自分类Dev

根据同一行中的另一个值从行中选择某个值

来自分类Dev

如何将另一个DataFrame中的值添加到与列匹配的行上?

来自分类Dev

python&pandas-删除行,其中列值是另一个DataFrame中的索引值

来自分类Dev

如何在matlab中根据另一个矩阵的行大小重塑列矩阵

来自分类Dev

根据另一行中的值选择一行 DataFrame 中的值

来自分类Dev

如何使用CSS根据页面中另一个元素的状态选择一个元素?

来自分类Dev

如何通过查询另一个表中的数据选择一个表中的所有行

来自分类Dev

Python:将DataFrame的每一行除以另一个DataFrame向量

来自分类Dev

如何选择另一个表中不存在的行

来自分类Dev

如何选择另一个表中不存在的行

Related 相关文章

  1. 1

    根据另一个 Dataframe 中的条件删除 Dataframe 中的行

  2. 2

    Python Pandas根据另一个列中的总数从另一个dataFrame中选择值

  3. 3

    遍历Pandas DataFrame行-根据另一个系列中的值更改系列值?

  4. 4

    如何在基于另一个DataFrame的列上删除DataFrame中的行?

  5. 5

    如何在基于另一个DataFrame的列上删除DataFrame中的行?

  6. 6

    从一个DataFrame中选择行,具体取决于另一个中的值

  7. 7

    DataFrame中的新列基于另一个DataFrame中的行和列

  8. 8

    从分组框中的另一个DataFrame的每一行创建DataFrame?

  9. 9

    如何根据另一个表的值删除一个表中的行

  10. 10

    根据另一个表中的数据从表中选择行

  11. 11

    根据另一个表中的数据从表中选择行

  12. 12

    MySql根据另一个表中的MAX值选择一个表中的所有行

  13. 13

    如何根据另一个表中的值访问表中的一行?

  14. 14

    根据 R 中另一个数据框中的行选择数据框中的行

  15. 15

    选择不在另一个表中的行

  16. 16

    根据另一个表中的关键字从一个表中选择行

  17. 17

    根据另一个表中的选定行从一个表中选择数据

  18. 18

    使用另一个DataFrame从Python中的DataFrame删除记录

  19. 19

    仅根据特定列检查一个DataFrame中的行是否存在于另一DataFrame中

  20. 20

    根据同一行中的另一个值从行中选择某个值

  21. 21

    如何将另一个DataFrame中的值添加到与列匹配的行上?

  22. 22

    python&pandas-删除行,其中列值是另一个DataFrame中的索引值

  23. 23

    如何在matlab中根据另一个矩阵的行大小重塑列矩阵

  24. 24

    根据另一行中的值选择一行 DataFrame 中的值

  25. 25

    如何使用CSS根据页面中另一个元素的状态选择一个元素?

  26. 26

    如何通过查询另一个表中的数据选择一个表中的所有行

  27. 27

    Python:将DataFrame的每一行除以另一个DataFrame向量

  28. 28

    如何选择另一个表中不存在的行

  29. 29

    如何选择另一个表中不存在的行

热门标签

归档