【问题标题】:Python dataframe drop rows with only index no cell valuesPython数据框删除只有索引没有单元格值的行
【发布时间】:2020-06-30 19:21:07
【问题描述】:

我有一个有趣的情况。我导入的数据框有索引值但没有单元格值。 这会导致执行任何功能时出错。如何删除那些只有索引但没有单元格值的行。

我现在的数据框:

df = 
        Time      A        B        C
1    5/7/2020 7:27  17.75613834  37.63067245  0.292461243
2    5/7/2020 7:28  17.81356335  38.32342911   0.30196029
3    5/7/2020 7:29  17.85858633  39.14722824  0.309710972
4    5/7/2020 7:30  17.80791306  39.10982895  0.317052315
5                                                      
6                                                     
7                                                     

在上面,如何删除 5、6、7 行?我的原始数据框有很多行。但我不知道哪些行具有索引值但为空。我想要一些自动的东西。
我试过跟随但没有用。

#### Dropt rows withs empty cells
df.replace('', np.nan, inplace=True)
df.dropna(how='all',inplace=True)

【问题讨论】:

  • index 实际上是列还是索引?替换后你真的得到NaNs 吗?
  • @CeliusStingher 我只是导入了一个CSV 文件。这就是它的样子。更换后我没有收到任何NaNs。
  • df[df['index'] <5]?此外,可能值得调整导入,而不是纠正次优导入的数据帧。
  • @warped 我相信这在这种情况下有效。但在一般情况下,我们不知道是哪一行导致了问题。

标签: python pandas dataframe


【解决方案1】:

这行得通吗:

import numpy as np
import pandas as pd

df = pd.DataFrame(
    columns=['Time', 'A', 'B', 'C'],
    data=[['5/7/2020 7:27', '17.75613834', '37.63067245', '0.292461243'],
          ['5/7/2020 7:28', '17.81356335', '38.32342911', ' 0.30196029'],
          ['5/7/2020 7:29', '17.85858633', '39.14722824', '0.309710972'],
          ['5/7/2020 7:30', '17.80791306', '39.10982895', '0.317052315'],
          ['', '', '', '']]
)

df.replace('', np.nan, inplace=True)
df = df.dropna()

返回

            Time            A            B            C
0  5/7/2020 7:27  17.75613834  37.63067245  0.292461243
1  5/7/2020 7:28  17.81356335  38.32342911   0.30196029
2  5/7/2020 7:29  17.85858633  39.14722824  0.309710972
3  5/7/2020 7:30  17.80791306  39.10982895  0.317052315

【讨论】:

    【解决方案2】:

    你可以试试这个:

    df = pd.DataFrame(
        columns=['Time', 'A', 'B', 'C'],
        data=[['5/7/2020 7:27', '17.75613834', '37.63067245', '0.292461243'],
              ['5/7/2020 7:28', '17.81356335', '38.32342911', ' 0.30196029'],
              ['5/7/2020 7:29', '17.85858633', '39.14722824', '0.309710972'],
              ['5/7/2020 7:30', '17.80791306', '39.10982895', '0.317052315'],
              ['', '', '', ''],
               ['', '', '', ''],
                ['', '', '', ''],
              ['5/7/2020 7:27', '17.75613834', '37.63067245', '0.292461243']])
    df=df[df!= ''].dropna()
    print(df)
    

    输出:

    original df:
                Time            A            B            C
    0  5/7/2020 7:27  17.75613834  37.63067245  0.292461243
    1  5/7/2020 7:28  17.81356335  38.32342911   0.30196029
    2  5/7/2020 7:29  17.85858633  39.14722824  0.309710972
    3  5/7/2020 7:30  17.80791306  39.10982895  0.317052315
    4                                                      
    5                                                      
    6                                                      
    7  5/7/2020 7:27  17.75613834  37.63067245  0.292461243
    
    
    newdf:
    
                Time            A            B            C
    0  5/7/2020 7:27  17.75613834  37.63067245  0.292461243
    1  5/7/2020 7:28  17.81356335  38.32342911   0.30196029
    2  5/7/2020 7:29  17.85858633  39.14722824  0.309710972
    3  5/7/2020 7:30  17.80791306  39.10982895  0.317052315
    7  5/7/2020 7:27  17.75613834  37.63067245  0.292461243
    

    【讨论】:

      猜你喜欢
      • 2022-11-14
      • 1970-01-01
      • 2023-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-02
      • 2021-03-22
      • 1970-01-01
      相关资源
      最近更新 更多