【发布时间】:2018-09-25 02:44:53
【问题描述】:
我有以下数据框:
item = ['item1','item2','item3']
amount = [500,200,800]
feature_2020 = [18,32,34]
feature_2030 = [28,42,44]
feature_2040 = [38,52,54]
df = pd.DataFrame({'index':item,'amount':amount,'feature_2020': feature_2020,'feature_2030':feature_2030,'feature_2040':feature_2040})
df.index= df['index']
print(df)
amount feature_2020 feature_2030 feature_2040 index
index
item1 500 18 28 38 item1
item2 200 32 42 52 item2
item3 800 34 44 54 item3
我想有效地执行以下操作(我已经可以做到,但方式非常糟糕):
- 对于每个特征列(feature_2020、feature_2030、feature_2040),我想过滤严格低于 20、介于 20 和严格低于 40 以及高于 40 的值。
- 应用此过滤器后,我想计算上面过滤的每个类别的剩余项目的数量列的总和。
预期结果:
inf20 = [500,1000,0]
supequal20_inf40 = [0,500,1000]
supequal40 = [0,500,1000]
index = ['inf20','supequal20_inf40','supequal40']
result = pd.DataFrame({'sum_feature_2020':inf20,'sum_feature_2030':supequal20_inf40,'sum_feature_2040': supequal40,'index':index})
result.index= result['index']
print(result)
sum_feature_2020 sum_feature_2030 sum_feature_2040
inf20 500 0 0
supequal20_inf40 1000 500 500
supequal40 0 1000 1000
有没有办法以有效的方式进行这种过滤和操作?
非常感谢您的帮助,
【问题讨论】:
-
feature_2030和feature_2040中的值属于同一类。为什么结果不同?
-
抱歉,结果部分出错了,我把矩阵倒置了。我已经更新了帖子,结果很好。 @RafaelC
标签: python pandas dataframe filtering calculation