python - 在 Python 中的 For 循环内连接并附加到 DataFrame
问题描述
我有以下问题。
具有特征和 ID 的数据集相当大。由于任务定义,我正在尝试进行聚类,但不是针对所有数据集,而是获取每个 ID,然后根据该特定 ID 的特征数据训练模型。细节如何:
想象一下,我们有我们的初始数据框df_init
然后我创建具有唯一 ID_s 的数组:
dd = df_init['ID'].unique()
之后,就像这样创建集合理解:
dds = {x:y for x,y in df_init.groupby('ID')}
使用 for 循环和迭代dds
,我正在获取数据并将其用于训练聚类算法。之后,pd.concat()
用于获取数据帧(对于本示例,将仅显示两个 ID):
df = pd.DataFrame()
d={}
n=5
for i in dd[:2]:
d[i] = dds[i].iloc[: , 1:5].values
ac = AgglomerativeClustering(n_clusters=n, linkage='complete').fit(d[i])
labels = ac.labels_
labels = pd.DataFrame(labels)
df = pd.concat([df, labels])
print(i)
print('Labels: ', labels)
所以这个循环的结果将是以下输出:
并且输出 df 看起来像这样(仅显示第一个 ID,其余标签也在那里):
我的问题如下:如何在循环中将附加列添加到此数据框,这将使某些 ID 与相应的标签(4 个标签-ID_1,另外 4 个标签-ID_2 等)相匹配?是否有任何熊猫解决方案可以实现这一目标?
提前谢谢了!
解决方案
在此行下方:
labels = pd.DataFrame(labels)
添加以下内容:
labels['ID']=i
这将为您提供具有每个子集正确 ID 的额外列
推荐阅读
- reactjs - useState 钩子是否改变了状态的值
- javascript - 如何修复异步 forEach 推送?
- swift - swiftUI - 我想在标签栏中移动项目的位置
- sql - 创建一个 20 年的 DB2 日历表,其中的列取决于原始日期
- python - 研究生很小
- linux - 如何一次触发多个 nohup 脚本?
- php - Artisan Make Not Generating Correct Templates
- r - Subset whole nested dataframe structure R
- amazon-web-services - How to save failed messages from Amazon SNS into Amazon S3
- html - How to add box-shadow to ::after when after if is a triangle?