我正在尝试将左连接应用于下面显示的两个数据帧。
outlier day season
0 11556.0 0 1
==========================================
date bikeid date2
0 1 16736 2016-06-06
1 1 16218 2016-06-13
2 1 15254 2016-06-20
3 1 16327 2016-06-27
4 1 17745 2016-07-04
5 1 16975 2016-07-11
6 1 17705 2016-07-18
7 1 16792 2016-07-25
8 1 18540 2016-08-01
9 1 17212 2016-08-08
10 1 11556 2016-08-15
11 1 17694 2016-08-22
12 1 14936 2016-08-29
outliers = pd.merge(异常值,sum_Day,how ='left',left_on = ['outlier'],right_on = ['bikeid'])
outliers = outliers.dropna(axis = 1,how ='any')
trip_outlier day season
0 11556.0 0 1
如上图所示,在应用左连接之后,我删除了所有NaN行,这些行给出了上面的结果。但是,所需的结果应如下所示
trip_outlier day season date2
0 11556.0 0 1 2016-08-15
答案 0 :(得分:0)
dtype
中outlier
列的outliers
似乎是浮点数。在两个连接列中都需要相同的dtypes
。
检查:
print (outliers['outlier'].dtype)
print (sum_Day['bikeid'].dtype)
因此请使用astype
进行转换:
outliers['outlier'] = outliers['outlier'].astype(int)
#if not int
#sum_Day['bikeid'] = sum_Day['bikeid'].astype(int)
编辑:
如果NaN
列中的某些outlier
无法转换为int
,则首先需要删除NaN
s:
outliers = outliers.dropna('outlier')
outliers['outlier'] = outliers['outlier'].astype(int)
答案 1 :(得分:0)
获得所需结果的一种方法是使用以下代码:
$ operator is invalid for atomic vectors