我试图连接两个不同的数据帧。我将解释我目前所做的一切,以便你了解我所做的努力。我对python有点陌生,如果有任何提示可以改进我的代码,我将不胜感激。在
我有一个数据集看起来很像:
cluster, Type
1, M
1, T
1, M
我对数据进行了分组并进行了一些汇总。除此之外,我还向数据集中添加了一些列。所以我的数据帧现在是这样的:
^{pr2}$聚合看起来是这样的:
>>> a
cluster Type, len
1, M, 2
1, T, 1
我想把everlen从a放到df中的相应列,这样得到的结果是:
>>> df
cluster, Type, M, T
1, M, 2, 0
1, T, 0, 1
我想做的是:
for idx, row in df.iterrows():
c = row['cluster']
t = row['Type']
val = a.loc[
(a['cluster'] == c) &
(a['Type'] == t),
'len'
]
row[t] = val
最后,它失败了,因为最后一行,行[t]没有得到更新。但我觉得我在用一种非常复杂的方式来做这件事。在
有什么好办法让它更优雅?在
这里有一个方法。它仍然涉及到一个循环,但我认为它比你试图做的更清楚和更快。它只使用原始的
df
,不需要您提供的聚合。在首先制作一个长度为
Type
的字典:然后删除原始
^{pr2}$df
中的重复项,最后循环使用len_dict
中的键,并将适当的列分配给相应的键:您可以使用
set_index
、unstack
和reset_index
从“a”到预期结果:输出:
^{pr2}$相关问题 更多 >
编程相关推荐