计算数据框中特定列的特定值?

时间:2017-05-18 16:50:53

标签: python pandas

我有一个数据框" My_data"像这样:

var1, var2, var3 
123,   234, 678
443,   567, fd
324,   678, 789
12,    102, fd

我想提取/计算或计算" fd"发生在" Var3"的最后一列中,所以在这个例子中输出put应该是:     输出:2 要么     输出:0.50

2 个答案:

答案 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