【发布时间】:2020-03-20 16:45:10
【问题描述】:
我对如何解决特定问题感到困惑。基本上,我希望做到以下几点:
使用 pandas,我想遍历行,如果字段中的值为 None/NaN,则将字段名称附加到新字段,如下所示。
+----+--------+----------+--------+--------+--------+---------------------------------+
| ID | Animal | Building | Letter | Fruit | Number | NullFields |
+----+--------+----------+--------+--------+--------+---------------------------------+
| 1 | Dog | House | C | null | 4 | Fruit |
| 2 | null | House | null | Apple | null | Animal, Letter, Number |
| 3 | Cat | null | B | Orange | null | Building, Number |
| 4 | null | null | null | null | 6 | Animal, Building, Letter, Fruit |
| 5 | Snake | null | A | null | 7 | Building, Fruit |
+----+--------+----------+--------+--------+--------+---------------------------------+
为了便于阅读,我在上面输入了“null”。我知道 None/NaN 不一样,但我正在处理的数据似乎两者都有。如果我必须运行fillna,那很好。
我认为np.where 不会在这里工作,除非我遗漏了什么。我不知道我是否需要改用iterrows 或什么。
任何提示/指导将不胜感激!
【问题讨论】:
-
那些
None/null/NaN是None值还是相应的字符串值? -
无。所以无论值基本上是空的。所以你在上面看到“null”的地方什么都没有,不是字符串的值。
-
我想到的一件事(但会很乱)是做这样的事情:
df['Test1'] = np.where(((df['Animal'].isnull()) 'Name of Field', None)\ndf['Test2'] = np.where(((df['Building'].isnull()) 'Name of Field', None)为每一列,然后添加结果......这个似乎不是一种非常有效的方法,实际上我有 20 个字段可供查看。