我有一个熊猫数据框。你知道吗
import pandas as pd
data = pd.DataFrame({
'a': [0,1,0,0,1,1,0,1],
'b': [0,0,1,0,1,0,1,1],
'c': [0,0,0,1,0,1,1,1],
'rate': [0,0.1,0.11,0.12,0.24,0.27,0.3,0.4]})
a、b、c是我的通道,我正在添加另一列,显示这些通道的行总计,方法是:
data['total'] = data.a + data.b + data.c
data
a b c rate total
1 1 0 0 0.10 1
2 0 1 0 0.11 1
3 0 0 1 0.12 1
4 1 1 0 0.24 2
5 1 0 1 0.27 2
6 0 1 1 0.30 2
7 1 1 1 0.40 3
我想处理total=1和total=2的数据
reduced = data[(data.a == 1) & (data.total == 2)]
print(reduced)
a b c rate total
4 1 1 0 0.24 2
5 1 0 1 0.27 2
我想向这个简化的数据帧添加如下列:
a b c rate total prob_a prob_b prob_c
4 1 1 0 0.24 2 0.1 0.11 0
5 1 0 1 0.27 2 0.1 0 0.12
在缩减数据帧的第一行中,prob\u c是0,因为c不存在(ABC=>;110)。在缩减数据帧的第二行中,由于b不存在,所以prob\u b为0(ABC=>;101)
在哪里
# Channel a alone occurs (ABC => 100)
prob_a = data['rate'][(data.a == 1) & (data.total == 1)]
# Channel b alone occurs (ABC => 010)
prob_b = data['rate'][(data.b == 1) & (data.total == 1)]
# Channel c alone occurs (ABC => 001)
prob_c = data['rate'][(data.c == 1) & (data.total == 1)]
我试过这个:
reduced['prob_a'] = data['rate'][(data.a == 1) & (data.total == 1)]
reduced['prob_b'] = data['rate'][(data.b == 1) & (data.total == 1)]
reduced['prob_c'] = data['rate'][(data.c == 1) & (data.total == 1)]
print(reduced)
结果是:
a b c rate total prob_a prob_b prob_c
4 1 1 0 0.24 2 NaN NaN NaN
5 1 0 1 0.27 2 NaN NaN NaN
把它分成两步
一个 计算概率
工作原理 总行数等于一行:
pipe
允许我们将结果管道化到函数中。根据上面的结果,我想将列a
、b
、c
与列rate
进行点积。通过pipe
的lambda
允许我这样做。你知道吗更广泛的方法
两个
剩下的
IIUC公司
相关问题 更多 >
编程相关推荐