pandas csv编写器正在将一些不现实的值写入python中的csv

gcuhipw9  于 2023-02-14  发布在  Python
关注(0)|答案(1)|浏览(118)

在我的代码中,csv编写器正在向CSV文件写入一些不现实的值。
我的目标是读取一个目录中的所有csv文件,并在任何特定列上放置过滤器,然后将过滤后的 Dataframe 写入合并的csv文件。
我可以在VS控制台中获得所需的输出,但无法将它们写入csv文件。
请帮助了解我做错了什么。
这是我的示例输入:

这是我得到的输出:

代码:

import pandas as pd
import os
import glob
import csv
from pandas.errors import EmptyDataError 
# use glob to get all the csv files 
# in the folder
path = os.getcwd()
#print(path)
csv_files = glob.glob(os.path.join(path, "*.csv"))
print(csv_files)
col_name = input("Enter the column name to filter: ")
print(col_name)

State_Input = input("Enter the {}  ".format(col_name) )
print(State_Input)

df_empty = pd.DataFrame()

for i in csv_files:
    try:
        
        df = pd.read_csv(i)
        #print(df.head(5))

        State_Filter = df["State"] == State_Input
        print(df[State_Filter])
        df_child = (df[State_Filter])
        with open('D:\\PythonProjects\\File-Split-Script\\temp\\output\\csv_fil111.csv', 'w') as csvfile:
         data_writer = csv.writer(csvfile, dialect = 'excel')
         
         for row in df_child:
            data_writer.writerows(row)
        
        
    except EmptyDataError as e:
        print('There was an error in your input, please try again :{0}'.format(e))
8hhllhi2

8hhllhi21#

使用pd.to_csv一次写入文件。首选将过滤后的 Dataframe 存储到列表中,然后将它们连接到一个新的 Dataframe 中:

import pandas as pd
import pathlib

data_dir = pathlib.Path.cwd()

# Your input here
state = input('Enter the state:  ')  # Gujarat, Bihar, ...
print(state)

data = []
for csvfile in data_dir.glob('*.csv'):
    df = pd.read_csv(csvfile)
    df = df.loc[df['State'] == state]]
    data.append(df)

df = pd.concat(data, axis=1, ignore_index=True)
df.to_csv('output.csv', axis=0)

相关问题