【问题标题】:Pandas: Drop row if second column is blankPandas:如果第二列为空,则删除行
【发布时间】:2018-08-29 16:57:13
【问题描述】:

我正在尝试使用 Python3 和 Pandas 来塑造数据框。

我当前的框架是这样的:

<style type="text/css">
.tg  {border-collapse:collapse;border-spacing:0;}
.tg td{font-family:Arial, sans-serif;font-size:14px;padding:10px 5px;border-style:solid;border-width:1px;overflow:hidden;word-break:normal;}
.tg th{font-family:Arial, sans-serif;font-size:14px;font-weight:normal;padding:10px 5px;border-style:solid;border-width:1px;overflow:hidden;word-break:normal;}
.tg .tg-baqh{text-align:center;vertical-align:top}
</style>
<table class="tg">
  <tr>
    <th class="tg-baqh"></th>
    <th class="tg-baqh">Col1</th>
    <th class="tg-baqh">Col2</th>
    <th class="tg-baqh">Col3</th>
  </tr>
  <tr>
    <td class="tg-baqh">0</td>
    <td class="tg-baqh">X</td>
    <td class="tg-baqh">Y</td>
    <td class="tg-baqh"></td>
  </tr>
  <tr>
    <td class="tg-baqh">1</td>
    <td class="tg-baqh"></td>
    <td class="tg-baqh">Z</td>
    <td class="tg-baqh">B</td>
  </tr>
</table>

如果第二列为空白,我将尝试删除该行(因此仅在此处删除第 2 行,索引 1),但第二列的名称可能会根据正在使用的文件而更改,因此我尝试使用 ix但无济于事...

c = df.ix[:,1]
df.dropna(subset=c, how='all', inplace=True)

有什么建议吗?

【问题讨论】:

  • 我很困惑,第 2 行的第二列怎么是空白的?
  • 看看coldspeed之前的回答:stackoverflow.com/questions/46864740/…。这很棒!结合 dropNa 和子集。
  • 子集的文档给出了-“子集:要考虑的沿其他轴的类数组标签,例如,如果您要删除行,这些将是要包含的列列表”。简单地说,df.dropna(subset=['Col2'], how='all', inplace=True)
  • @anonyXmous 哇,谢谢 :)
  • @coldspeed:对不起,我把第一行算作第 0 行只是为了混淆。索引号 1 是我需要删除的行。

标签: python pandas


【解决方案1】:

我认为这回答了你的问题。您可以获取列名并将其存储到变量中:

x= df.columns.tolist()[0]

然后:

df=df[df[x].isnull()==False]

【讨论】:

    【解决方案2】:
    second = df[df.columns.tolist()[1]]
    df = df[second.notnull()]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-21
      • 2012-06-28
      • 2020-04-19
      • 2019-06-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多