【问题标题】:Pandas drop method does not work.熊猫掉落方法不起作用。
【发布时间】:2018-01-08 18:31:41
【问题描述】:

我想按日期过滤一个相当大的 Pandas 数据框(大约 300 万行)。 由于某种原因,与布尔标准一起使用的 drop 方法根本不起作用。它只是返回相同的旧数据框。不过删除单行也没问题。

这是最初使用的代码,基本上什么都不做:

import pandas as pd

#open the file

df = pd.read_csv('examplepath/examplefile.csv', names=['File Name','FileSize','File Type','Date Created','Date Last Accessed','Date Last Modified','Path'],\
             delimiter=';', header=None, encoding="ISO-8859-1",)

#convert to german style date

df['Date Created'] = pd.to_datetime(df['Date Created'], dayfirst=True)

#drop rows and assign new dataframe    

df_filtered = df.drop(df[df['Date Created'] > datetime(2010,1,1)])

然后我想出了这个代码,它看起来就像一个魅力:

import pandas as pd

#open the file

df = pd.read_csv('examplepath/examplefile.csv', names=['File Name','FileSize','File Type','Date Created','Date Last Accessed','Date Last Modified','Path'],\
             delimiter=';', header=None, encoding="ISO-8859-1",)

#convert to german style date

df['Date Created'] = pd.to_datetime(df['Date Created'], dayfirst=True)

#select rows and assign new dataframe

df_filtered = df['Date Created'] < datetime(2010,1,1)

理论上两个代码应该做同样的事情,对吧? 是首选代码之一吗?我可以只使用我的第二个代码吗?将来我可能需要添加第二个过滤日期。

我希望有人可以帮助我。

感谢和最好的问候, 斯蒂芬

【问题讨论】:

  • 您想在同一列/数据框中过滤日期,还是想以任何其他格式检索?
  • df_filtered = df['Date Created'] &lt; datetime(2010,1,1) 生成一个布尔值系列。如果您想使用它从df 中选择行,请使用df_filtered = df.loc[df['Date Created'] &lt; datetime(2010,1,1)]

标签: python pandas dataframe data-science


【解决方案1】:

您必须为索引列表或列名称分别“删除”行或列。
阅读docs 并提供示例。
您的第二种方法有效,因为这是您过滤数据框的方式。
你可以随意使用。

【讨论】:

    猜你喜欢
    • 2016-01-31
    • 2015-12-24
    • 2019-04-21
    • 2017-11-23
    • 1970-01-01
    • 1970-01-01
    • 2016-10-23
    • 2018-03-11
    相关资源
    最近更新 更多