熊猫:“左连接”无法正常工作

时间:2017-10-24 13:27:46

标签: python pandas merge

我正在尝试将左连接应用于下面显示的两个数据帧。

      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

2 个答案:

答案 0 :(得分:0)

dtypeoutlier列的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