我有这个DF。
import pandas as pd
import scipy.optimize as sco
pd.set_option('display.max_columns', None)
pd.set_option('display.max_rows', None)
data = [['ATTICA',1,2,590,680],['ATTICA',1,2,800,1080],['AVON',14,2,950,1250],['AVON',15,3,500,870],['AVON',20,4,1350,1700]]
df = pd.DataFrame(data, columns=['cities','min_workers','max_workers','min_minutes','max_minutes'])
df
df['Non_HT_Outages'] = (df['min_workers'] < 15).groupby(df['cities']).transform('count')
df['HT_Outages'] = (df['min_workers'] >= 15).groupby(df['cities']).transform('count')
df
我正在尝试计数名为'min_workers'的列中的项目,如果〈15,则放入列'Non-HT',但如果〉=15,则放入列'HT'。我的计数似乎不正确。
1条答案
按热度按时间blmhpbnm1#
如果您在转换中将
count
更改为sum
,它将工作。这是因为
(df['min_workers'] < 15).groupby(df['cities'])
为每个城市创建了一个布尔列表,满足条件时使用True
条目,不满足条件时使用False
条目。count
给出了所有条目的计数,包括真和假。sum
只计算真条目(将真和假视为1和0,并将它们相加)。