python中的映射、求和和条件

python中的映射、求和和条件,python,pandas,Python,Pandas,有没有办法让这更有效 我正在使用“数据文件夹”中的国会数据集 回答有多少共和党人对至少10个议题投了“n0”票?老鼠 voters = Labels[Labels['class name'] == 'democrat'] non_no_locations = voters != 'n' voters[non_no_locations] = 0 no_locations = voters == 'n' voters[no_locations] = 1 Total_no = voters.sum(

有没有办法让这更有效

我正在使用“数据文件夹”中的国会数据集

回答有多少共和党人对至少10个议题投了“n0”票?老鼠

voters = Labels[Labels['class name'] == 'democrat']
non_no_locations = voters != 'n'
voters[non_no_locations] = 0
no_locations = voters == 'n'
voters[no_locations] = 1
Total_no = voters.sum(axis=1)
greater10 = Total_no >= 10
print(greater10.sum())
***编辑以删除打印,以前没有打印就无法工作。再试一次,效果很好

我在控制台上看到很多红色的信息

A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

以下是另一种方法:

import numpy as np
import pandas as pd

topics_col = ["topic_%i" % i for i in range(16)]

df = pd.read_csv('house-votes-84.data', names = ['class name'] + topics_col)

df = df.replace('y', np.NaN).replace('?', np.NaN)
df['n_sum'] = df[topics_col].count(axis=1)

df[df.n_sum >= 10].groupby('class name')[['n_sum']].count()

## RESULT
#
#             n_sum
# class name       
# democrat       14
# republican     12

以下是另一种方法:

import numpy as np
import pandas as pd

topics_col = ["topic_%i" % i for i in range(16)]

df = pd.read_csv('house-votes-84.data', names = ['class name'] + topics_col)

df = df.replace('y', np.NaN).replace('?', np.NaN)
df['n_sum'] = df[topics_col].count(axis=1)

df[df.n_sum >= 10].groupby('class name')[['n_sum']].count()

## RESULT
#
#             n_sum
# class name       
# democrat       14
# republican     12

打印可能是上述代码中性能最差的部分。打印可能是上述代码中性能最差的部分。感谢您的帮助,您的方法看起来确实更干净。但是,我收到了这个错误:
TypeError:只能将元组(而不是“列表”)连接到元组
奇怪!我没有得到那样的东西。您是否执行了整个代码段?如果是,您可以添加整个跟踪吗?谢谢您的帮助,您的方法看起来确实更干净。但是,我收到了这个错误:
TypeError:只能将元组(而不是“列表”)连接到元组
奇怪!我没有得到那样的东西。您是否执行了整个代码段?如果是,是否可以添加整个跟踪?