Python 使用熊猫和录音带按功能筛选.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函数只需使用它接收到的索引对所有字典进行

我正试图通过某个特性来分隔给定的.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
函数只需使用它接收到的索引对所有字典进行迭代并将其追加即可

例如,给定这个.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]}