我面临着一个特殊的问题。我有2个数据帧,x有180k行,y有700行。我正在通过查找从x到y的列并将第三列作为系列来创建另一个z系列。但是当我将这个系列添加到x时,值会完全改变。下面给出了两个计数分布。知道为什么会这样吗?
z=pd.merge(x,y,how='left',left_on='xcol1',right_on='ycol1')['ycol2']
x['colnew']=z
z.value_counts()
x['colnew'].value_counts()
答案 0 :(得分:0)
检查z系列的len。可能是你在y中有重复的键或没有相应的键,所以z可能与x ['colnew']的大小不同。
答案 1 :(得分:0)
查看this pandas documentation for merging,特别是像[44].
我认为问题可能是“钥匙”没有对齐。参数left_on='xcol1'
将xcol1
指定为数据框x
的连接键,同样right_on='ycol1'
指定ycol1
作为数据框y.
<的连接键/ p>
how
参数确定要在合并的数据框中保留哪些密钥。此处,由于您指定的how='left'
对应于数据框x
,如果数据框y
具有未包含在数据框x
键中的键,则会丢弃它们。 后果:您最终可能会得到一个合并的数据框z
,该数据框比您预期的更小(就行数而言,即观察数据)。
如果数据框x
和数据框y
的连接键不匹配,则相应的变量值将映射到NaN
。 后果:value_counts()
会发生变化,因为会有更多NaN
个值,这些值不会在此函数中计算。
答案 2 :(得分:0)
想出来。我基本上不得不使用
x['colnew']=z.values
这是非常令人惊讶的,以前从未遇到过这种情况。