首页 > 解决方案 > 基于列值python pandas匹配行

问题描述

我正在处理财务数据,我想匹配两只股票的时间戳。我拥有(或可以生成)的格式是:

带有列的大数据框或带有索引类型的列的[timestamp1, ..., timestamp2, ....]两个单独dataframe的列。[timestamp1, ..] [timestamp2, ...]integer

我想得到一个dataframe只有行 where的大timestamp1 = timestamp2数据,并注意可能 df['timestamp1][i] == df['timestamp2][j]wherei!=j

示例数据框可以是:

2018-01-02-07:00:00, salmon, bacon, eggs,  2018-01-02-07:01:00, peanuts, butter, milk

2018-01-02-07:03:00, tuna, avocado, null,  2018-01-02-07:02:00, bacon, bacon, bacon

2018-01-02-07:04:00, salmon, tuna, tuna,  2018-01-02-07:03:00, lettuce, tomato, bacon

如您所见,这是无法解决的, df = df[ df['timestamp1] == df['timestamp2'] ]因为相应时间戳的索引不相等。注意索引类型是int

我确实知道一种非常繁琐的解决方法,但它必须以一种更简单的方式成为可能(例如,可以通过填充所有不存在的时间戳来解决,这样每​​个时间戳的索引号都相同)

希望你能帮助我,我将永远欠你的债!

标签: pythondataframematchrow

解决方案


对于 2 个单独的数据框:

pd.merge(df1, df2, left_on="timestamp1", right_on="timestamp2", how="inner")

推荐阅读