2

使用以下代码创建新数据框是否有任何潜在的缺点,其中我指定了我想在新数据框中看到的原始数据框中的非常具体的信息。

df_workloc = (df[df['WorkLoc'] == 'Home'][df['CareerSat'] == 'Very satisfied'][df['CurrencySymbol'] == 'USD'][df['CompTotal'] >= 50000])

我使用了 2019 年 Stack Overflow 调查数据。像这样:

WorkLoc指定受访者的工作地点。

CareerSat指定受访者的职业满意度。

CurrencySymbol指定受访者以何种货币获得报酬。

CompTotal指定受访者的总薪酬是多少。

如果有人有一种更清洁、更有效的方式来实现具有精细/特定信息的数据框,我很乐意看到它。我想做的一件事是在同一行中指定 >= 50000 和 <=75000 的 Compensation total CompTotal。但是,当我尝试包含第二个布尔值时出现错误。

提前致谢。

4

1 回答 1

4

我认为你需要链条件与 & 用于按位AND和过滤boolean indexing,也用于最后一个条件Series.between

m1 = df['WorkLoc'] == 'Home'
m2 = df['CareerSat'] == 'Very satisfied'
m3 = df['CurrencySymbol'] == 'USD'
m4 = df['CompTotal'].between(50000, 75000)
df_workloc = df[m1 & m2 & m3 & m4]

或者对于一条线解决方案:

df_workloc = df[(df['WorkLoc'] == 'Home') &
                (df['CareerSat'] == 'Very satisfied') &
                (df['CurrencySymbol'] == 'USD') &
                 df['CompTotal'].between(50000, 75000)]
于 2020-04-01T04:34:52.753 回答