【问题标题】:Drop all data in a pandas dataframe删除 pandas 数据框中的所有数据
【发布时间】:2017-01-03 13:56:07
【问题描述】:

我想删除 pandas 数据框中的所有数据,但我得到了TypeError: drop() takes at least 2 arguments (3 given)。我基本上想要一个只有我的列标题的空白数据框。

import pandas as pd

web_stats = {'Day': [1, 2, 3, 4, 2, 6],
             'Visitors': [43, 43, 34, 23, 43, 23],
             'Bounce_Rate': [3, 2, 4, 3, 5, 5]}
df = pd.DataFrame(web_stats)

df.drop(axis=0, inplace=True)
print df

【问题讨论】:

  • 我确实喜欢@ayhan 的解决方案,但我认为df = pd.DataFrame(columns=df.columns) 会更快更高效...
  • 同意@MaxU——它实际上快了大约 100 倍(测试数据帧有 1M 行和 10 列)
  • df.iloc[0:0] 实际上比 df 构造要快。我猜您是在将其与 drop 而不是 iloc 进行比较?
  • @ayhan,你说得对,我说的是df.drop(...)
  • 之后使用gc.collect()不是一个好主意吗?

标签: python python-2.7 pandas


【解决方案1】:

您需要传递要删除的标签。

df.drop(df.index, inplace=True)

默认情况下,它在axis=0上运行。

你可以用

实现同样的效果
df.iloc[0:0]

效率更高。

【讨论】:

    【解决方案2】:

    我最喜欢的:

    df = df.iloc[0:0]
    

    但请注意 df.index.max() 将是 nan。 添加我使用的项目:

    df.loc[0 if math.isnan(df.index.max()) else df.index.max() + 1] = data
    

    【讨论】:

      【解决方案3】:

      我最喜欢的方式是:

      df = df[0:0] 
      

      【讨论】:

      • 简短甜美,好记!
      【解决方案4】:

      用类似的东西覆盖数据框

      import pandas as pd
      
      df = pd.DataFrame(None)
      

      或者如果你想保留列

      df = pd.DataFrame(columns=df.columns)
      

      【讨论】:

        【解决方案5】:

        如果您的目标是删除数据框,那么您需要传递所有列。对我来说:最好的方法是将列表理解传递给列 kwarg。然后,无论 df 中的不同列如何,这都将起作用。

        import pandas as pd
        
        web_stats = {'Day': [1, 2, 3, 4, 2, 6],
                     'Visitors': [43, 43, 34, 23, 43, 23],
                     'Bounce_Rate': [3, 2, 4, 3, 5, 5]}
        df = pd.DataFrame(web_stats)
        
        df.drop(columns=[i for i in check_df.columns])
        

        【讨论】:

          【解决方案6】:

          这段代码生成干净的数据框:

          df = pd.DataFrame({'a':[1,2], 'b':[3,4]})
          #clean
          df = pd.DataFrame()
          

          【讨论】:

          • OP 写道:我基本上想要一个只有我的列标题的空白数据框。
          猜你喜欢
          • 2021-06-18
          • 1970-01-01
          • 1970-01-01
          • 2022-07-19
          • 2018-05-22
          • 1970-01-01
          • 2019-06-07
          • 1970-01-01
          • 2016-06-01
          相关资源
          最近更新 更多