[英]Python Pandas: How can I drop rows using df.drop and df.loc?
假设我有以下 dataframe:
import numpy as np
import pandas as pd
df = pd.DataFrame(
{
'user': ['Adam', 'Barry', 'Cindy', 'Dirk', 'Ella'],
'income': [50000, 0, 100000, 30000, 0],
'net worth': [250000, 1000000, 2000000, 50000, 0]
}
)
到目前为止,我一直在使用以下条件根据条件删除行:
df2 = df[df.income != 0]
并像这样使用多个条件:
df3 = df[(df['income'] != 0) & (df['net worth'] > 100000)]
问题:这是删除行的首选方式吗? 如果不是,那是什么? 是否可以通过df.drop
和df.loc
做到这一点? 语法是什么?
.loc
创建您要保留的行的子集,而不是.drop
过滤您要删除的行。 drop
需要行 label(索引名称)。
最后一个带drop
的过滤器的等价物是:
>>> df.drop(df[~((df['income'] != 0) & (df['net worth'] > 100000))].index)
user income net worth
0 Adam 50000 250000
2 Cindy 100000 2000000
# OR a bit smart:
>>> df.drop(df[(df['income'] == 0) | (df['net worth'] <= 100000)].index)
user income net worth
0 Adam 50000 250000
2 Cindy 100000 2000000
您更喜欢哪种语法?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.