【发布时间】:2021-08-13 17:32:11
【问题描述】:
我有以下问题 - 我有以下示例数据框:
| Name | Planet | Number Column #1 | Number Column #2 |
|---|---|---|---|
| John | Earth | 2 | 0 |
| Peter | Terra | 0 | 0 |
| Anna | Mars | 5 | 4 |
| Robert | Knowhere | 0 | 1 |
在这里,我只想删除所有数字为 0 的行。在这种情况下,这是第二行。所以我的数据框必须变成这样:
| Name | Planet | Number Column #1 | Number Column #2 |
|---|---|---|---|
| John | Earth | 2 | 0 |
| Anna | Mars | 5 | 4 |
| Robert | Knowhere | 0 | 1 |
为此,我有一个解决方案,如下:
new_df = old_df.loc[(a['Number Column #1'] > 0) + (a['Number Column #2'] > 0)]
这行得通,但是我还有另一个问题。根据请求,我的数据框将动态具有不同数量的数字列。例如:
| Name | Planet | Number Column #1 | Number Column #2 | Number Column #3 |
|---|---|---|---|---|
| John | Earth | 2 | 0 | 1 |
| Peter | Terra | 0 | 0 | 0 |
| Anna | Mars | 5 | 4 | 2 |
| Robert | Knowhere | 0 | 1 | 1 |
这是有问题的部分,因为我不确定如何调整我的代码以适用于动态列。我从 StackOverflow 和 Pandas 文档中尝试了多种方法 - 但是大多数示例仅适用于数据帧,其中所有列都是整数。 Pandas 是否会将它们视为布尔值,您可以添加一个简单的解决方案,如下所示:
new_df = (df != 0).any(axis=1)
然而,在我的情况下,总是相同的文本列是有问题的。有人对这里的解决方案有想法吗?提前非常感谢!
附:我将代码中预先可用的数字列的名称作为列表,例如:
my_num_columns = ["Number Column #1", "Number Column #2", "Number Column #3"]
# my pandas logic...
【问题讨论】: