2017-07-19 68 views
2

我正面临着一个特殊问题。我有2个数据框,x有180k行,y有700行。我正在创建另一个系列z,通过查找x到y的列并获得第三列作为系列。但是当我将这个系列添加到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

当您执行pd.merge()时,'z'不是DataFrame吗?它应该是。 – Stratix

+0

你是什么意思“查找从x到y的列?” – hausdork

回答

0

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

0

退房this pandas documentation for merging,特别是Jupyter笔记本一样[44].

我想到一个问题,可能是因为“钥匙”不用排队。该参数指定left_on='xcol1'xcol1用于数据框x联接键,同样right_on='ycol1'指定ycol1作为连接键的数据帧y.

  1. how参数确定哪个键来在你的合并数据帧。由于您指定了对应于数据帧xhow='left',因此如果数据帧y的密钥未包含在数据帧x的密钥中,则它们将被丢弃。 结果:您最终可能会得到一个合并数据框z,该数据框比您期望的更小(以行数计,即观察值)。

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

0

想通了。我基本上不得不使用

x['colnew']=z.values 

这是非常令人惊讶的,从来没有遇到过这个。