【发布时间】:2018-07-18 10:37:59
【问题描述】:
我试图理解为什么合并函数会重复值。
>>> c2.head()
Out[42]:
Bin Date/Time val
A 10/31/2017 15:53:57 0.77
A 10/31/2017 15:53:57 0.75
A 10/31/2017 15:53:57 0.79
A 10/31/2017 15:53:57 0.67
A 10/31/2017 15:53:57 0.72
>>> c1.head()
Out[44]:
Bin Date/Time code
A 10/31/2017 15:53:57 BYM
A 10/31/2017 15:53:57 CFS
A 10/31/2017 15:53:57 DFZ
A 10/31/2017 15:53:57 HKN
A 10/31/2017 15:53:57 RBF
我需要在 Bin 和 Datetime 上合并这 2 个。
>>> c= c1.merge(c2, on =['Bin','Date/Time'], how= 'left')
>>> c.head()
Out[50]:
Bin Date/Time Code Val
A 10/31/2017 15:53:57 BYM 0.77
A 10/31/2017 15:53:57 BYM 0.77
A 10/31/2017 15:53:57 BYM 0.77
A 10/31/2017 15:53:57 BYM 0.77
A 10/31/2017 15:53:57 BYM 0.77
所以 c 对于同一个 bin/datetime 有多个条目。我认为也许日期时间值看起来相同但不同。但事实并非如此。
>>> c1['Date/Time'].iloc[0]
Out[46]: u'10/31/2017 15:53:57'
>>> c2['Date/Time'].iloc[0]
Out[47]: u'10/31/2017 15:53:57'
>>> c1['Date/Time'].iloc[0]==c2['Date/Time'].iloc[0]
Out[48]: True
此外,即使 datetime 不同,每个 bin/datetime 也应该只有 2 行。知道这里可能会发生什么吗?
我的预期输出是:
Bin Date/Time Code Val
A 10/31/2017 15:53:57 BYM 0.77
A 10/31/2017 15:53:57 CFS 0.75
A 10/31/2017 15:53:57 DFZ 0.79
A 10/31/2017 15:53:57 HKN 0.67
A 10/31/2017 15:53:57 RBF 0.72
【问题讨论】:
-
您的预期输出是什么?
c1和c2的行数是否相同,您只想将val列从c2添加到c1? -
@jp_data_analysis 添加了预期输出
-
你试过了吗:
c1['Val'] = c2['Val']? -
如果以下答案之一有帮助,请随时接受(在左侧打勾),以便其他用户可以看到经过测试的解决方案。
标签: python pandas dataframe merge duplicates