[问题] pandas 使用dropna 无法删除nan列

楼主: yshihyu (yshihyu)   2020-09-05 06:42:41
想删除pandas 中的所有 nan 列字段,
使用用 data.dropna(axis=1,how='all') 还是无法删除掉
请问这是什么原因?
程式码网址如下
https://pastebin.com/v1qmebKz
谢谢
作者: gmccntzx1 (o.O)   2020-09-05 07:12:00
你可以先去查一下 how='all' or 'any' 的差别再补一点:注意有没有设定 inplace=True
楼主: yshihyu (yshihyu)   2020-09-05 07:27:00
any是行列全部只要有包含nan 都移除, inplace=True刚试还是无法删除掉nan 字段
作者: gmccntzx1 (o.O)   2020-09-05 08:39:00
你可以描述一下你最后想要得到的结果长什么样子吗?是只要一行资料中有一栏资料是 NA 就把那行资料 drop 掉,还是怎么样的?如果是的话,照理说我上面的做法就可以了。如果不是,那你至少简单的描述一下你预期处理前与处理后想看到的资料长什么样子给大家看看,省得双方还要等待回复和猜测你的想法是什么
楼主: yshihyu (yshihyu)   2020-09-05 08:40:00
我是想把字段中有 NAN 那列删除掉result = data.dropna() ... 我刚刚改这样就可以但我不知道为什么原因~这资料原本有949笔...有一列中有 NAN , 我希望删除NAN那列..
作者: gmccntzx1 (o.O)   2020-09-05 08:48:00
因为你说的“删掉 nan 字段”这句话的意思,我理解的是“把该行里是 nan 的那个字段删掉,只保留其他有资料的字段”。如果是这样的话,这种操作对于这种 table形式的资料是不合理的,因为这就代表处理完后,各行资料的字段数量会不同。因为 dropna 默认回传一个新的 dataframe,避免直接修改原始资料。所以如果你不是把 inplace 设为 true 的话,你就要去接 dropna 回传的资料。而如果你设 inplace=True,那写法就变成 df.dropna(inplace=True) 即可,跑完这行后,df 就是你要的结果。
作者: TitanEric (泰坦)   2020-09-05 08:53:00
你要删row有包含Nan应该是axis=0,how='any' 刚试有成功记得接return值啊 感谢前面帮忙
作者: gmccntzx1 (o.O)   2020-09-05 08:57:00
没事,只是觉得不要让原 PO 解完问题却不知道原因是什么
作者: gulaer (Yu)   2020-09-09 07:46:00
how的话是全部都nan才会删除喔!不放才是default有一格是nan就删掉整列

Links booklink

Contact Us: admin [ a t ] ucptt.com