将数据框列值除以列的总数
Divide dataframe column value by the total of the column
我的问题对你们中的许多人来说可能太简单了,但由于我是 Python..
的初学者
我想要包含 3 个不同可能值 (1,0,-1) 的列的值百分比,但要排除列中的一个值(-1)。
我这样做了:(df['col_name']).sum()/len(df.col_name)
但是它也计算其中的-1,而我只想得到值1/总和的百分比,但总和中没有-1。
感谢您的帮助。
对于排除值,将 -1
替换为缺失值:
df['col_name'].replace(-1, np.nan).sum()/len(df.col_name)
如果需要计算过滤系列的长度,则过滤掉 -1
个值:
np.random.seed(123)
df = pd.DataFrame({'col_name':np.random.choice([0,1,-1], size=10)})
print (df)
col_name
0 -1
1 1
2 -1
3 -1
4 0
5 -1
6 -1
7 1
8 -1
9 1
s = df.loc[df['col_name'] != -1, 'col_name']
print (s)
1 1
4 0
7 1
9 1
Name: col_name, dtype: int32
print (s.sum()/len(s))
0.75
print (s.mean())
0.75
假设你有这个数据框
df = pd.DataFrame({
'col_name': [1,1,0,-1,-1,1,0]
})
col_name
0 1
1 1
2 0
3 -1
4 -1
5 1
6 0
你想计算 1 的个数除以没有 -1 的总数,即 5 个中有 3 个,对吗?
numerator = sum(df['col_name'].apply(lambda x: 1 if x==1 else 0))
denominator = sum(df['col_name'].apply(lambda x: 0 if x==-1 else 1))
print(numerator/denominator)
输出0.6
我的问题对你们中的许多人来说可能太简单了,但由于我是 Python..
的初学者我想要包含 3 个不同可能值 (1,0,-1) 的列的值百分比,但要排除列中的一个值(-1)。
我这样做了:(df['col_name']).sum()/len(df.col_name)
但是它也计算其中的-1,而我只想得到值1/总和的百分比,但总和中没有-1。
感谢您的帮助。
对于排除值,将 -1
替换为缺失值:
df['col_name'].replace(-1, np.nan).sum()/len(df.col_name)
如果需要计算过滤系列的长度,则过滤掉 -1
个值:
np.random.seed(123)
df = pd.DataFrame({'col_name':np.random.choice([0,1,-1], size=10)})
print (df)
col_name
0 -1
1 1
2 -1
3 -1
4 0
5 -1
6 -1
7 1
8 -1
9 1
s = df.loc[df['col_name'] != -1, 'col_name']
print (s)
1 1
4 0
7 1
9 1
Name: col_name, dtype: int32
print (s.sum()/len(s))
0.75
print (s.mean())
0.75
假设你有这个数据框
df = pd.DataFrame({
'col_name': [1,1,0,-1,-1,1,0]
})
col_name
0 1
1 1
2 0
3 -1
4 -1
5 1
6 0
你想计算 1 的个数除以没有 -1 的总数,即 5 个中有 3 个,对吗?
numerator = sum(df['col_name'].apply(lambda x: 1 if x==1 else 0))
denominator = sum(df['col_name'].apply(lambda x: 0 if x==-1 else 1))
print(numerator/denominator)
输出0.6