繁体   English   中英

如何从我的数据框中删除几行?

[英]How can I drop several rows from my Dataframe?

我有一个数据框(称为 my_df1)并且想根据特定日期删除几行。 如何创建没有日期“2020-05-01”和“2020-05-04”的新数据框(my_df2)?

我尝试了以下不起作用,如下所示:

my_df2 = mydf_1[(mydf_1['Date'] != '2020-05-01') | (mydf_1['Date'] != '2020-05-04')] 
my_df2.head()

在此处输入图片说明

问题似乎出在您的逻辑运算符上。 您应该使用and here 而不是or因为您必须选择所有不是2020-05-012020-05-04的行。

按位运算符不会短路,因此结果。

您可以将isin与否定~符号一起使用:

dates=['2020-05-01', '2020-05-04']
my_df2 = mydf_1[~mydf_1['Date'].isin(dates)] 

关于你的错误ANDOR的简短解释由 kanmaytacker 解决。 以下是一些额外的建议:

大熊猫索引:

按标签.loc
按索引.iloc

按标签也可以在没有.loc情况下工作,但速度较慢,因为它由链式操作组成,而不是由嵌套循环组成的单个内部操作(请参阅此处)。 此外,使用.loc您可以一次在多个轴上进行选择。

# example with rows. Same logic for columns or additional axis.
df.loc[(df['a']!=4) & (df['a']!=1),:] # ".loc" is the only addition
>>>
   a  b  c
2  0  4  6

您的索引是一个布尔集。 这对于numpy 来说是正确的,作为一个结果,熊猫也是如此。

(df['a']!=4) & (df['a']!=1)
>>>
0    False
1    False
2     True
Name: a, dtype: bool

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM