我正在处理财务数据,我希望匹配两只股票的时间戳。我拥有(或可以生成)的格式是:
包含[timestamp1, ..., timestamp2, ....]
列的大型数据框或两个单独的dataframe
,其中列[timestamp1, ..] [timestamp2, ...]
的索引类型为integer
。
我希望得到一个只有dataframe
行的大timestamp1 = timestamp2
,并注意有可能
df['timestamp1][i] == df['timestamp2][j]
其中i!=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
我确实知道解决它的一种非常繁琐的方法,但它必须以更简单的方式实现(例如,可以通过填写所有不存在的时间戳来解决,使得每个时间戳的索引号将是相同的)
希望你能帮助我,我将永远为你负债!答案 0 :(得分:0)
对于2个独立的数据帧:
pd.merge(df1, df2, left_on="timestamp1", right_on="timestamp2", how="inner")
答案 1 :(得分:0)
如果时间戳在同一数据帧的两列中,则可以执行以下操作:
import pandas as pd
import numpy as np
# first find the common values
common = np.intersect1d(df.timestamp1, df.timestamp2)
# now get rows that have these common values
df[df.timestamp1.isin(common) | df.timestamp2.isin(common)]