python - 按 Pandas 分组并按值替换空值

标签 python pandas

我有一个巨大的 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 需要花费大量时间处理字符串。有一个更好的方法吗?

最佳答案

让我们尝试使用 groupbyfirst 来跳过 NaN 值

df=df.groupby('id').first().reset_index()

关于python - 按 Pandas 分组并按值替换空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62055058/

相关文章:

python - 仅当特定值出现在 Pandas 的一列中时,Groupby 才会计数

python通过列表创建一个包含一行的数据框

python - 在继承类中扩展 wagtail Streamfields

python - 如何访问 Pandas DataFrame 中嵌入的 json 对象?

python - 在python中使用正则表达式匹配html标签

python - 防止 numpy select 在 "choicelist"和 "default"参数中转换值

Python psycopg2 检查行是否存在

python - 直方图相关特定列

python - 将前 1...N 个月的值移动为单独的列

python - 如何正确地将小时数添加到 pandas.tseries.index.DatetimeIndex?