[英]Pandas drop rows on multiple conditions
我有一个 dataframe:
from_dict = {'weekday': {1937: 'Thursday',
1938: 'Thursday',
1939: 'Thursday',
1940: 'Friday',
1941: 'Friday',
1942: 'Friday',
1943: 'Saturday'},
'sort': {1937: 'pre',
1938: 'day',
1939: 'twi',
1940: 'pre',
1941: 'day',
1942: 'twi',
1943: 'pre'},
'volume': {1937: 48840,
1938: 43936,
1939: 48393,
1940: 47675,
1941: 42271,
1942: 46270,
1943: 28721}}
df = pd.DataFrame.from_dict(from_dict)
weekday sort volume
1937 Thursday pre 48840
1938 Thursday day 43936
1939 Thursday twi 48393
1940 Friday pre 47675
1941 Friday day 42271
1942 Friday twi 46270
1943 Saturday pre 28721
我只想切出 'weekday' == 'Friday' & 'sort' == 'day' 的行和 'weekday' == 'Thursday' & 'sort' == 'day' 的行
weekday sort volume
1937 Thursday pre 48840
1939 Thursday twi 48393
1940 Friday pre 47675
1942 Friday twi 46270
1943 Saturday pre 28721
我更喜欢对行进行切片的原因是因为这个数据框被传递到一个 pivot_table 而我不关心创建一个新变量或修改原始数据框。 我尝试按多种条件进行切片,但显然没有用。
sort_df[((sort_df['weekday'] != 'Thursday') & (sort_df['sort'] != 'day'))]
这只会删除星期四和星期四的所有行。 我知道答案会非常明显,我现在肯定知道了。
尝试:
>>> df[~(df["weekday"].isin(["Thursday", "Friday"])&df["sort"].eq("day"))]
weekday sort volume
1937 Thursday pre 48840
1939 Thursday twi 48393
1940 Friday pre 47675
1942 Friday twi 46270
1943 Saturday pre 28721
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.