我有一个数据框" My_data"像这样:
var1, var2, var3
123, 234, 678
443, 567, fd
324, 678, 789
12, 102, fd
我想提取/计算或计算" fd"发生在" Var3"的最后一列中,所以在这个例子中输出put应该是: 输出:2 要么 输出:0.50
答案 0 :(得分:1)
您可以使用.shape
来计算满足条件的行数,您无需导入任何其他内容。
import pandas as pd
d = {'var1': [123, 443, 324, 12],
'var2': [234, 567, 678, 102],
'var3': [678, "fd", 789, "fd"]}
df = pd.DataFrame(data=d)
df[df['var3']=="fd"].shape[0]/df.shape[0]
这应该会给你0.5
。如果您只想计算,请使用df[df['var3']=="fd"].shape[0]
。
答案 1 :(得分:0)
这是一种直截了当的方式:
拉出绝对出现次数:
My_data['var3'].value_counts(normalize=False).loc['fd']
2
拉出记录百分比:
My_data['var3'].value_counts(normalize=True).loc['fd']
0.5
这种方法更快/更有效:
%timeit df.var3.value_counts(normalize=True).loc['fd']
1000 loops, best of 3: 597 µs per loop
%timeit df[df['var3']=="fd"].shape[0]/df.shape[0]
The slowest run took 16.34 times longer than the fastest. This could mean that an intermediate result is being cached.
1000 loops, best of 3: 710 µs per loop