Python 使用熊猫和录音带按功能筛选.csv文件
我正试图通过某个特性来分隔给定的.csv文件。 根据请求,Python 使用熊猫和录音带按功能筛选.csv文件,python,pandas,Python,Pandas,我正试图通过某个特性来分隔给定的.csv文件。 根据请求,load\u data功能无法更改 是否有更好的方法将有效数据(给定.csv文件的整行)过滤为data_valid,将无效数据过滤为data_invalid def load_data(path): df = pd.read_csv(path) data = df.to_dict(orient='list') return data append_line_to_dict函数只需使用它接收到的索引对所有字典进行
load\u data
功能无法更改
是否有更好的方法将有效数据(给定.csv文件的整行)过滤为data_valid,将无效数据过滤为data_invalid
def load_data(path):
df = pd.read_csv(path)
data = df.to_dict(orient='list')
return data
append_line_to_dict
函数只需使用它接收到的索引对所有字典进行迭代并将其追加即可
例如,给定这个.csv
ind name is_legal
0 James 1
1 Dykan 0
2 Sam 1
3 Jake 1
数据看起来像
data = {['ind':[0,1,2,3],'name':["James","Dylan","Sam","Jake"],'is_legal':[1,0,1,1]
有效的数据应该如下所示
data_valid = {['ind':[0,2,3],'name':["James","Sam","Jake"],'is_legal':[1,1,1] ]}
这是我的密码
data = load_data(path)
filter_by_feature(data,"is_legal")
你可以这样做-
data = {
"ind": [0, 1, 2, 3],
"name": ["James", "Dylan", "Sam", "Jake"],
"is_legal": [1, 0, 1, 1]
}
def filter_by_feature(data,feature):
data_valid={}
data_invalid={}
# print(data['is_legal'])
valid_indices = [i for i, x in enumerate(data[feature]) if x == 1]
invalid_indices = [i for i, x in enumerate(data[feature]) if x != 1]
for key,item in data.items():
valid_item = [item[i] for i in valid_indices]
invalid_item = [item[i] for i in invalid_indices]
data_valid[key] = valid_item
data_invalid[key] = invalid_item
print(data_valid)
print(data_invalid)
filter_by_feature(data, 'is_legal')
输出-
{'ind': [0, 2, 3], 'name': ['James', 'Sam', 'Jake'], 'is_legal': [1, 1, 1]}
{'ind': [1], 'name': ['Dylan'], 'is_legal': [0]}
请分享完整的数据示例。不清楚你想根据什么进行过滤。你在函数中传递的功能的值是多少?@Nk03希望我所做的编辑helps@Aame您如何尝试调用您的函数?在您提到的示例中,您使用哪些“功能”作为函数的参数?谢谢您的回答,但是我试图避免使用Panda的数据帧(不是出于选择)…嗨,我已经更新了我的答案。这就是你需要的吗?。如果是,那么我会编辑并解释它。是的,它看起来像!
{'ind': [0, 2, 3], 'name': ['James', 'Sam', 'Jake'], 'is_legal': [1, 1, 1]}
{'ind': [1], 'name': ['Dylan'], 'is_legal': [0]}