Python 2.7 合并错误iterable,而不是itertools.imap

Python 2.7 合并错误iterable,而不是itertools.imap,python-2.7,pandas,Python 2.7,Pandas,我正在尝试使用下面的pandas合并代码合并两个数据帧。每个数据帧只有三列。我以前也做过类似的合并,没有问题。我已经在每个数据帧上提供了.info()。关于iterable与not itertools.imap,我发现一个错误。我不知道他们在说什么。非常感谢任何提示 Data: pio_smp2_sm.info() <class 'pandas.core.frame.DataFrame'> Int64Index: 12779 entries, 15 to 68311 Data c

我正在尝试使用下面的pandas合并代码合并两个数据帧。每个数据帧只有三列。我以前也做过类似的合并,没有问题。我已经在每个数据帧上提供了.info()。关于iterable与not itertools.imap,我发现一个错误。我不知道他们在说什么。非常感谢任何提示

Data:

pio_smp2_sm.info()

<class 'pandas.core.frame.DataFrame'>
Int64Index: 12779 entries, 15 to 68311
Data columns (total 3 columns):
entityId          12779 non-null object
targetEntityId    12779 non-null object
eventTime         12779 non-null object
dtypes: object(3)
memory usage: 399.3+ KB


cm_smp2.info()

<class 'pandas.core.frame.DataFrame'>
Int64Index: 28035 entries, 40 to 698858
Data columns (total 3 columns):
user_id       28035 non-null object
product_id    28035 non-null object
time_stamp    28035 non-null object
dtypes: object(3)
memory usage: 876.1+ KB


Code:

comp_df2=pd.merge(pio_smp2_sm,cm_smp2,how='inner',left_on=['entityId','targetEntityId'],right_on=['user_id','product_id'])


Error:

TypeErrorTraceback (most recent call last)
<ipython-input-235-6882a22fe6a1> in <module>()
     23 
     24 
---> 25 comp_df2=pd.merge(pio_smp2_sm,cm_smp2,how='inner',left_on=['entityId','targetEntityId'],right_on=['user_id','product_id'])
     26 
     27 # print(comp_df2.shape[0])

/data2/user/anaconda2/lib/python2.7/site-packages/pandas/core/reshape/merge.pyc in merge(left, right, how, on, left_on, right_on, left_index, right_index, sort, suffixes, copy, indicator, validate)
     56                          copy=copy, indicator=indicator,
     57                          validate=validate)
---> 58     return op.get_result()
     59 
     60 

/data2/user/anaconda2/lib/python2.7/site-packages/pandas/core/reshape/merge.pyc in get_result(self)
    580                 self.left, self.right)
    581 
--> 582         join_index, left_indexer, right_indexer = self._get_join_info()
    583 
    584         ldata, rdata = self.left._data, self.right._data

/data2/user/anaconda2/lib/python2.7/site-packages/pandas/core/reshape/merge.pyc in _get_join_info(self)
    746         else:
    747             (left_indexer,
--> 748              right_indexer) = self._get_join_indexers()
    749 
    750             if self.right_index:

/data2/user/anaconda2/lib/python2.7/site-packages/pandas/core/reshape/merge.pyc in _get_join_indexers(self)
    725                                   self.right_join_keys,
    726                                   sort=self.sort,
--> 727                                   how=self.how)
    728 
    729     def _get_join_info(self):

/data2/user/anaconda2/lib/python2.7/site-packages/pandas/core/reshape/merge.pyc in _get_join_indexers(left_keys, right_keys, sort, how, **kwargs)
   1048 
   1049     # get left & right join labels and num. of levels at each location
-> 1050     llab, rlab, shape = map(list, zip(* map(fkeys, left_keys, right_keys)))
   1051 
   1052     # get flat i8 keys from label lists

TypeError: type object argument after * must be an iterable, not itertools.imap
数据:
pio_smp2_sm.info()
INT64索引:12779条,15至68311
数据列(共3列):
entityId 12779非空对象
targetEntityId 12779非空对象
eventTime 12779非空对象
数据类型:对象(3)
内存使用率:399.3+KB
cm_smp2.info()
INT64索引:28035条,40至698858
数据列(共3列):
用户id 28035非空对象
product_id 28035非空对象
时间戳28035非空对象
数据类型:对象(3)
内存使用率:876.1+KB
代码:
comp_df2=pd.merge(pio_smp2_sm,cm_smp2,how='inner',左上=['entityId','targetEntityId',右上=['user_id','product_id']))
错误:
TypeErrorTraceback(最近一次呼叫上次)
在()
23
24
--->25 comp_df2=pd.merge(pio_smp2_sm,cm_smp2,how='inner',左上=['entityId','targetEntityId',右上=['user_id','product_id']))
26
27#打印(comp#u df2.shape[0])
/合并中的data2/user/anaconda2/lib/python2.7/site-packages/pandas/core/reforme/merge.pyc(左、右、如何、开、左、右、左索引、右索引、排序、后缀、复制、指示器、验证)
56复制=复制,指标=指标,
57验证=验证)
--->58返回操作获取结果()
59
60
/获取结果(self)中的data2/user/anaconda2/lib/python2.7/site-packages/pandas/core/restrape/merge.pyc
580自左,自右)
581
-->582联合索引,左联合索引器,右联合索引器=self.\u获取联合信息()
583
584 ldata,rdata=self.left.\u数据,self.right.\u数据
/数据2/user/anaconda2/lib/python2.7/site-packages/pandas/core/restrape/merge.pyc in_get\u join\u info(self)
746其他:
747(左索引器,
-->748右索引器)=self.\u获取\u加入\u索引器()
749
750如果自右索引:
/data2/user/anaconda2/lib/python2.7/site-packages/pandas/core/restrape/merge.pyc在索引器(self)中
725自动右键连接键,
726 sort=self.sort,
-->727 how=自我。how)
728
729定义获取加入信息(自我):
/数据2/user/anaconda2/lib/python2.7/site-packages/pandas/core/reforme/merge.pyc在索引器中(左键、右键、排序、方式、**kwargs)
1048
1049#获取左右连接标签以及每个位置的级别数
->1050 llab,rlab,shape=map(列表,zip(*地图(FKEY,左键,右键)))
1051
1052#从标签列表中获取平面i8键
TypeError:*之后的类型对象参数必须是iterable,而不是itertools.imap

你能告诉我们
.head(10)
对这两个dfs都有什么作用吗?你的任何关键列都包含列表或dict吗?@ALollz谢谢,是的,问题是在上一步中,我在user\u id列上运行了.str.strip(),出于某种原因,它将每个条目从123改为[123]。知道为什么.str.strip()会这样做吗?我以前从未让它这么做过。