【发布时间】:2022-01-17 18:30:23
【问题描述】:
我有这个数据框:
A B
0 [0, 1, 2] 1
1 foo 1
2 [3, 4] 1
我想对“A”列使用爆炸功能,然后在“B”列的情况下为每个爆炸行保持正确和公平的比例。所以结果应该是这样的:
A B
0 0 0.33
0 1 0.33
0 2 0.33
1 foo 1
2 3 0.5
2 4 0.5
这可以通过explode 功能实现吗?我会设法用for row in data.itertuples(): 得出这个结果,但是如果数据框很大,for 循环会很慢。那么您知道如何通过爆炸或其他快速方法解决这个问题吗?
如果有任何帮助,我将不胜感激。
【问题讨论】:
-
edf = df.explode("A"); edf.B = edf.groupby(edf.index).B.transform("size").rdiv(1)。您没有将您的全部尝试显示为代码,因此我不尝试解释。另外,如果这对你来说足够快的话,idk :) -
很公平。不管怎么说,还是要谢谢你。除非我使用 for 循环,否则我没有设法解决这个问题。我不确定在没有以任何方式连接的情况下使用 for 循环将这种尝试发布到这篇文章是否值得。
标签: python pandas dataframe pandas-explode