Python 尝试将列表附加到数据帧,并基于ID进行匹配
因此,我有一个包含89个字段的数据帧。我只是用一对夫妇来做K_意味着集群。我有AccountID和每个ID所属的集群。以下是名为“详细信息”的列表Python 尝试将列表附加到数据帧,并基于ID进行匹配,python,python-3.x,Python,Python 3.x,因此,我有一个包含89个字段的数据帧。我只是用一对夫妇来做K_意味着集群。我有AccountID和每个ID所属的集群。以下是名为“详细信息”的列表 ('38380AT31', 17), ('36295KCN1', 0), ('3132KFBD3', 14), ('3130A8X40', 14), ('912796SD2', 22), ('3617AVGD4', 0), ('03H0716A9', 0), ('912828LA6', 22), ('3133EJY29', 8),
('38380AT31', 17),
('36295KCN1', 0),
('3132KFBD3', 14),
('3130A8X40', 14),
('912796SD2', 22),
('3617AVGD4', 0),
('03H0716A9', 0),
('912828LA6', 22),
('3133EJY29', 8),
('36176DHG1', 0),
...]
现在,我正试图找出如何向现有数据帧添加一个新字段,并将集群ID与适当的帐户ID相匹配。我试过下面这行代码
df = df.append(details, ignore_index=True)
这将运行,但它似乎没有将集群ID附加到数据帧(并且ignore_index=True看起来可疑)。然后,我尝试了这行代码
df['details'] = df.append([details],index=df['AccountID'].index)
这会引发一个错误,声明:TypeError:append()获得了一个意外的关键字参数“index”
我希望我解释得足够好。我在这里遗漏了什么?我尝试了一下并完成了: 代码:
df
AccountID col
2 3132KFBD3 14
1 36295KCN1 0
0 38380AT31 17
df=pd.DataFrame({'AccountID':['38380AT31','36295KCN1','3132KFBD3']})
ls=[('38380AT31',17),
('36295KCN1',0),
('3132KFBD3',14)]
ls.sort()
排序_值(by=['AccountID'],inplace=True)#对df和list进行排序,以在正确的索引中获得相同的AccountID
a=[]
对于范围(0,len(ls))中的i:
a、 附加(ls[i][1])
df['col']=a
输出:
df
AccountID col
2 3132KFBD3 14
1 36295KCN1 0
0 38380AT31 17
这假设列表没有重复项,并且正确计数为数据帧。这是一个粗糙的方法,但它会完成工作 谢谢你的关注。我做了更多的研究,得出了这个结论
details_df = pd.DataFrame(details)
details_df.columns = ['AccountNo','ClusterID']
finalDF = pd.merge(dataset, details_df, left_index=False, right_index=False, how='inner')
df['details']=np。数组(details)
是我通常做的事情。如果details
的长度与您的df
的长度相同,那么这将起作用。当我这样做时:len(details)df.shape我看到两个都是10000条记录。这正是我所期望的。当我运行代码时,我得到了以下错误:ValueError:传递的项目数错误2,placement意味着1。另外,是否应该有一种方法匹配AccountID?否则,您如何保证列表中的ClusterID与dataframe中的正确AccountID相关联?