社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

python:如何通过切片来选择某些列,以替换groupby后面的NaN值?

Kashyap Maheshwari • 6 年前 • 1796 次点击  

假设我们有一个df,如下所示

df = pd.DataFrame({ 'Col1' : [1, 1, 1, 2, 2, 2, 2],
                   'Col2' : [5, 6, 8, 3, 7, 8, 5],
                  'Col3' : [2, None, None, 3, None, None, 4],
                  'Col4' : [3, None,5, None, 8, None, 66],
                  'Col5': [None, 8, 6, None, 9, 6,None],
                  'Col6' : [3,5,2,5,2,7,9]})

我想取代 None Col3 , Col4 Col5 使用JJS建议的解决方案 in this post here 应用后 groupby 在第一列 Col1 .

我的做法是

df = df.groupby('Col1')['Col3','Col4','Col5'].ffill().bfill()

但是手动提到这些列是很费事的。

所以,我想知道如何选择列 COL3 , COL4 第5列 切片?

谢谢

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/30336
 
1796 次点击  
文章 [ 2 ]  |  最新文章 6 年前
Christian Sloper
Reply   •   1 楼
Christian Sloper    6 年前

此解决方案按所需方式填充所有NaN列:

df.groupby('Col1')[df.columns[df.isnull().any()]].ffill().bfill()
RafaelC
Reply   •   2 楼
RafaelC    6 年前

我不确定我是否理解你的问题。

据我所见,你可以直截了当

df.groupby('Col1').ffill().bfill()

因为 ffill() bfill() 只是不更改列 NaN S.

现在,如果您事先知道需要回填/ffill哪些列并希望减少冗长性,可以将它们保存在 cols 变量

cols = ['Col3','Col4','Col5']
df[cols] = df.groupby('Col1')[cols].ffill().bfill()