Python 如何根据配置文件(文本或CSV)中的用户输入筛选熊猫数据帧配置将告诉筛选值和筛选列
我有一个从CSV文件创建的数据框,我需要帮助根据配置文件的输入(可以是文本或CSV)对数据框进行过滤。配置文件将包含我必须筛选的列名以及我必须筛选的值或条件。到目前为止,我有以下代码Python 如何根据配置文件(文本或CSV)中的用户输入筛选熊猫数据帧配置将告诉筛选值和筛选列,python,pandas,dataframe,filter,Python,Pandas,Dataframe,Filter,我有一个从CSV文件创建的数据框,我需要帮助根据配置文件的输入(可以是文本或CSV)对数据框进行过滤。配置文件将包含我必须筛选的列名以及我必须筛选的值或条件。到目前为止,我有以下代码 import pandas as pd import os import time import csv import datetime import sys file_loc = sys.argv[1] input_file_1 = 'mapping_config_1.txt' file_det = os
import pandas as pd
import os
import time
import csv
import datetime
import sys
file_loc = sys.argv[1]
input_file_1 = 'mapping_config_1.txt'
file_det = os.path.join(file_loc, input_file_1)
file_details = pd.read_csv(file_det, header = 0, delimiter = "\t")
df = pd.read_csv(r'C:\filter\test.txt', sep = "|")
for index, row in file_details.iterrows():
filter_col = row('Target_Column')
filter = row['Filter']
df = df.loc[df['filter_col'].isin(filter)]
df.head(1000).to_csv(os.path.join(file_loc, 'output.txt'), sep = "|", index = False)
我的配置文本文件看起来像,我的dataframe有一个名为
Client_Product
Filter Target_Column
10170 Client_Product
我收到“类型错误”:序列对象不可调用
我正在寻找任何一种方法,在这种方法中,我可以将过滤条件从配置文件传递到Python程序。您遇到的错误是由于行
filter\u col=row('Target\u Column')
导致的,在该行中,您使用括号()
而不是括号[]
其他问题:
pd.Series.isin
需要一个列表,但您只提供了一个值。
您只需将前三行替换为df=df.loc[df[row['Target\u Column']]==row['Filter']]
这还可以避免生成名为
filter
的变量,因为这会覆盖一个变量,您应该避免这样做 @p Maschhoff感谢您的回复,这非常有效,我计划编写更多代码并添加更多过滤场景,例如值大于或等于或小于某个值。我将再次分享最终代码以供参考