【发布时间】:2018-08-13 06:33:23
【问题描述】:
我正在尝试连接 2 个 DataFrame,但 .join 正在创建不需要的重复项。
df_ask:
timestamp price volume
1520259290 10.5 100
1520259275 10.6 2000
1520259275 10.55 200
df_bid:
timestamp price volume
1520259290 10.25 500
1520259280 10.2 300
1520259275 10.1 400
我试过了:
depth = pd.concat([df_ask,df_bid], axis=1, keys=['Ask Orders','Bid Orders'])
但这会返回一个我理解的错误(“concat failed Reindexing only valid with unique value Index objects”)
我试过了:
df_ask.join(df_bid, how='outer', lsuffix='_ask', rsuffix='_bid')
这没有给出错误,但给出了以下数据框:
timestamp price_ask volume_bid price_bid volume_bid
1520259290 10.5 100 10.25 500
1520259280 NaN NaN 10.2 300
1520259275 10.6 2000 10.1 400
1520259275 10.55 200 10.1 400
我的问题是时间戳 1520259275 处重复的 10.1 和 400。它们两次不在原始 df_bid 数据帧中,而应该只在此 df 中一次。有两行相同的时间戳是正确的,因为此时有两行要价,但是应该只有一个与此时间戳相关联的出价信息行。另一个应该是 NaN。
即我正在寻找的是这个:
timestamp price_ask volume_bid price_bid volume_bid
1520259290 10.5 100 10.25 500
1520259280 NaN NaN 10.2 300
1520259275 10.6 2000 10.1 400
1520259275 10.55 200 NaN NaN
我查看了 merge/join/concat 文档和 this question,但找不到我要查找的内容。提前致谢
【问题讨论】:
-
您使用
Time作为索引...而且它不是唯一的。我不明白你想要什么。请编辑您的帖子并展示您的想法。 -
@piRSquared 正确。
Time不会是独一无二的。顺便说一句,我将索引更改为timestamp以减少混乱。我已更新问题以显示我在寻找什么。
标签: python python-3.x pandas dataframe concatenation