我有一个巨大的 Pandas 数据框 df,包含超过 400 万行,如下所示。
id value percent value_1 percent_1
0 1 0.530106 21%-31% NaN NaN
1 2 0.086647 10%-20% NaN NaN
2 3 0.073121 $30%-40% NaN NaN
3 4 0.76891 81%-90% NaN NaN
4 5 0.86536 41%-50% NaN NaN
5 1 NaN NaN 0.630106 91%-100%
6 2 NaN NaN 0.086647 11%-20%
7 3 NaN NaN 0.073121 $0%-10%
8 4 NaN NaN 0.376891 81%-90%
9 5 NaN NaN 0.186536 41%-50%
我想要一个如下所示的数据框
id value percent value_1 percent_1
0 1 0.530106 21%-31% 0.630106 91%-100%
1 2 0.086647 10%-20% 0.086647 11%-20%
2 3 0.073121 $30%-40% 0.073121 $0%-10%
3 4 0.76891 81%-90% 0.376891 81%-90%
4 5 0.86536 41%-50% 0.186536 41%-50%
一种巧妙的方法是用空字符串替换 NaN,将整个 df 列转换为字符串并将它们分组
df = df.replace(np.nan,'')
df = df.astype(str)
df.groupby(['id']).sum()
但这需要很长时间,因为 groupby 需要花费大量时间处理字符串。有一个更好的方法吗?
最佳答案
让我们尝试使用 groupby
和 first
来跳过 NaN 值
df=df.groupby('id').first().reset_index()
关于python - 按 Pandas 分组并按值替换空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62055058/