【发布时间】:2018-01-30 03:42:29
【问题描述】:
我有一个熊猫系列 S:
Date
2/27/2017 149
2/28/2017 150
3/01/2017 154
3/04/2017 152
3/12/2017 156
3/17/2017 148
我也有一个 Dataframe df
Date A B C PS
2/28/2017 12:42:05 1 2 4 2/27/2017
2/28/2017 12:42:07 1 2 4 2/27/2017
2/28/2017 12:42:08 1 2 4 2/27/2017
2/28/2017 12:42:55 1 2 4 2/27/2017
3/01/2017 12:42:05 1 2 4 2/28/2017
3/01/2017 12:42:07 1 2 4 2/28/2017
3/01/2017 12:42:08 1 2 4 2/28/2017
3/01/2017 12:42:09 1 2 4 2/28/2017
3/05/2017 12:42:05 1 2 4 3/04/2017
3/05/2017 12:42:07 1 2 4 3/04/2017
3/05/2017 12:42:08 1 2 4 3/04/2017
3/05/2017 12:42:09 1 2 4 3/04/2017
A、B、C 确实发生了变化,但它们与这个问题无关。
我想要一个如下的输出数据框:
Date A B C PS Value
2/28/2017 12:42:05 1 2 4 2/27/2017 149
2/28/2017 12:42:07 1 2 4 2/27/2017 149
2/28/2017 12:42:08 1 2 4 2/27/2017 149
2/28/2017 12:42:55 1 2 4 2/27/2017 149
3/01/2017 12:42:05 1 2 4 2/28/2017 150
3/01/2017 12:42:07 1 2 4 2/28/2017 150
3/01/2017 12:42:08 1 2 4 2/28/2017 150
3/01/2017 12:42:09 1 2 4 2/28/2017 150
3/05/2017 12:42:05 1 2 4 3/04/2017 152
3/05/2017 12:42:07 1 2 4 3/04/2017 152
3/05/2017 12:42:08 1 2 4 3/04/2017 152
3/05/2017 12:42:09 1 2 4 3/04/2017 152
基本上我想在 df 中添加一个名为 Value 的列,其中 Value 是与系列 S 中的日期相对应的任何值,即 df 的 PS 列中的任何值。
伪代码是 df["值"] = S[df[PS]]
我不想把系列中的日期列/索引带过来。
【问题讨论】:
-
这是一个简单的
merge()操作。阅读merge()上的任何教程。 -
df.info()和s.info()的输出是什么? (其中df和s分别是您的数据框和系列的名称)。 -
df.merge(s.to_frame(), left_on='PS', right_index=True)假设您的系列索引中的日期与PS列中的日期一致。 -
请注意,与映射或替换相比,合并要慢得多。
标签: python pandas dataframe merge series