特殊问题为pandas数据帧添加系列

时间:2017-07-19 19:22:47

标签: python pandas

我面临着一个特殊的问题。我有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()

3 个答案:

答案 0 :(得分:0)

检查z系列的len。可能是你在y中有重复的键或没有相应的键,所以z可能与x ['colnew']的大小不同。

答案 1 :(得分:0)

查看this pandas documentation for merging,特别是像[44].

这样的Jupyter笔记本

我认为问题可能是“钥匙”没有对齐。参数left_on='xcol1'xcol1指定为数据框x的连接键,同样right_on='ycol1'指定ycol1作为数据框y. <的连接键/ p>

  1. how参数确定要在合并的数据框中保留哪些密钥。此处,由于您指定的how='left'对应于数据框x,如果数据框y具有未包含在数据框x键中的键,则会丢弃它们。 后果:您最终可能会得到一个合并的数据框z,该数据框比您预期的更小(就行数而言,即观察数据)。

  2. 如果数据框x和数据框y的连接键不匹配,则相应的变量值将映射到NaN后果:value_counts()会发生变化,因为会有更多NaN个值,这些值不会在此函数中计算。

答案 2 :(得分:0)

想出来。我基本上不得不使用

x['colnew']=z.values

这是非常令人惊讶的,以前从未遇到过这种情况。