创建新的数据框,它总结了一些其他列的不同数值范围的出现次数
Create new dataframe which summarizes the number of occurences for different numeric ranges of some other column
我有数据框 df
,如第一张照片所示。绿色行是列 Condition1 为 'Yes' 的行。黄色行是同时具有 Condition1
和 Condition2
列的行,如 'Yes'.
问题:
请参阅 second photo,其中显示了所需的输出,这是一个新的数据帧,其中:
(1)。 'Count_Condition1' 列包含绿色行出现的次数。 'Count_Condition_1&2' 列包含黄色行出现的次数。
(2)。除了 (1),我想将列 'Vol' 拆分为不同的范围(见第二张照片)并相应地显示计数。
例如Condition1='Yes'的情况有3个,Vol
的数据范围在0.2到0.2999之间
将 cut
用于合并列 Vol
和计数匹配 Yes
值创建辅助列,计数 True
s 的最后一个聚合布尔值:
bins=[-np.inf, 0.2, 0.3, 0.4, 0.5, np.inf]
labels = [ f'{a} to {round(b-0.0001, 4)}'.replace('-inf to ', '<=').replace(' to inf', '')
for a, b in zip(bins, bins[1:])]
labels[-1] = '>=' + labels[-1]
s1 = df['Condition1'].eq('Yes')
s2 = df['Condition2'].eq('Yes')
g = pd.cut(df['Vol'], bins = bins, right = False, labels = labels)
df1 = (df.assign(Count_Condition1 = s1, Count_Condition_1_2 = s1 & s2)
.groupby(g)[['Count_Condition1','Count_Condition_1_2']]
.sum())
print (df1)
Count_Condition1 Count_Condition_1_2
Vol
<=0.1999 2 1
0.2 to 0.2999 3 1
0.3 to 0.3999 1 1
0.4 to 0.4999 1 0
>=0.5 2 2
我有数据框 df
,如第一张照片所示。绿色行是列 Condition1 为 'Yes' 的行。黄色行是同时具有 Condition1
和 Condition2
列的行,如 'Yes'.
问题: 请参阅 second photo,其中显示了所需的输出,这是一个新的数据帧,其中:
(1)。 'Count_Condition1' 列包含绿色行出现的次数。 'Count_Condition_1&2' 列包含黄色行出现的次数。
(2)。除了 (1),我想将列 'Vol' 拆分为不同的范围(见第二张照片)并相应地显示计数。
例如Condition1='Yes'的情况有3个,Vol
的数据范围在0.2到0.2999之间
将 cut
用于合并列 Vol
和计数匹配 Yes
值创建辅助列,计数 True
s 的最后一个聚合布尔值:
bins=[-np.inf, 0.2, 0.3, 0.4, 0.5, np.inf]
labels = [ f'{a} to {round(b-0.0001, 4)}'.replace('-inf to ', '<=').replace(' to inf', '')
for a, b in zip(bins, bins[1:])]
labels[-1] = '>=' + labels[-1]
s1 = df['Condition1'].eq('Yes')
s2 = df['Condition2'].eq('Yes')
g = pd.cut(df['Vol'], bins = bins, right = False, labels = labels)
df1 = (df.assign(Count_Condition1 = s1, Count_Condition_1_2 = s1 & s2)
.groupby(g)[['Count_Condition1','Count_Condition_1_2']]
.sum())
print (df1)
Count_Condition1 Count_Condition_1_2
Vol
<=0.1999 2 1
0.2 to 0.2999 3 1
0.3 to 0.3999 1 1
0.4 to 0.4999 1 0
>=0.5 2 2