Python 计算数据帧中特定列中的特定值?
我有一个数据框“我的数据”,如下所示:Python 计算数据帧中特定列中的特定值?,python,pandas,Python,Pandas,我有一个数据框“我的数据”,如下所示: var1, var2, var3 123, 234, 678 443, 567, fd 324, 678, 789 12, 102, fd 我想提取/计算或计算“Var3”最后一列中出现“fd”的百分比,因此在本例中,输出put应为: 产出:2 或 输出:0.50您可以使用.shape计算满足条件的行数,而无需导入任何其他内容 import pandas as pd d = {'var1': [123, 443, 324, 12],
var1, var2, var3
123, 234, 678
443, 567, fd
324, 678, 789
12, 102, fd
我想提取/计算或计算“Var3”最后一列中出现“fd”的百分比,因此在本例中,输出put应为:
产出:2
或
输出:0.50您可以使用
.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]
以下是一种简单的方法:
拉取绝对出现次数:
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
谢谢,它给了我和我想要的完全一样的东西。编辑-使用我的默认
df
变量。将dataframe重命名为My_data
。是的,这一个也可以使用,但有一点变化:My_data['var3']。value_计数(normalize=True)。loc['fd']。谢谢。My_data.var3
和My_data['var3']
完全可以互换。