[英]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.