Python 带有标量值的pd.DataFrame

Python 带有标量值的pd.DataFrame,python,pandas,dataframe,csv,Python,Pandas,Dataframe,Csv,我想通过在验证过程后保存新的CSV来删除CSV文件中的一些行。我写了下面的代码,但它导致了一个错误 with open(path_to_read_csv_file, "r") as csv_file: csv_reader = csv.DictReader(csv_file, delimiter=',') for line in csv_reader: # if validation(line[specific_column]):

我想通过在验证过程后保存新的CSV来删除CSV文件中的一些行。我写了下面的代码,但它导致了一个错误

with open(path_to_read_csv_file, "r") as csv_file:
    csv_reader = csv.DictReader(csv_file, delimiter=',')
    for line in csv_reader:
        # if validation(line[specific_column]):
            try:
                df = pd.DataFrame(line)
                df.to_csv(path_to_save_csv_file)

            except Exception as e:
                print('Something Happend!')
                print(e)
                continue
错误:

Something Happend!
If using all scalar values, you must pass an index
我还尝试通过
df=pd.DataFrame(line,index=[0])
添加一个索引值,但它只存储第一行,并在开头添加一个空列。如何解决这个问题

另一个带有
的版本可以工作,但我无法在每行达到特定的键值:

inFile = open(path_to_read_csv_file, 'r')
outFile = open(path_to_save_csv_file, 'w')

for line in inFile:
    try:
        print('Analysing:', line)

        # HERE, how can I get the specific column value? I used to use line[specific_column] in the last version
        if validation(line[specific_column]):
            outFile.write(line)
        else:
            continue

    except Exception as e:
        print('Something Happend!')
        print(e)
        continue

outFile.close()
inFile.close()

我应该帮助你。基本上,您不能仅从标量值创建数据帧。它们必须包装在一个
列表中
构造函数
pd.DataFrame
希望您告诉您提供的数据也必须如何索引。这是有案可查的

函数
csv.DictReader
使用

文件f第一行中的值将用作字段名

有关更多信息,请参阅csv

因此,由
csv\u读取器
解析的每个
都是一个字典,其中键是csv头,值是特定行中的每一行

例如,如果我的CSV是:

Header1, Header2, Header3
1,2,3
11,11,33
然后在第一次迭代中,
对象将是:

{'Header1': '1', 'Header2': '2', 'Header3': '3'}
现在,当您将其提供给pd.DataFrame时,您需要指定数据是什么以及标题/索引是什么。在这种情况下,数据是
['1','2','3']
,标题/索引是
['Header1','Header2','Header3']
。这些可以分别通过调用
line.values()
line.keys()
提取

这就是我所做的改变

with open(path_to_read_csv_file, "r") as csv_file:
    csv_reader = csv.DictReader(csv_file, delimiter=',')
    for line in csv_reader:
        try:
            # validation ...
            df = pd.DataFrame(line.values(), line.keys())
            df.to_csv(path_to_save_csv_file)

        except Exception as e:
            print('Something Happend!')
            print(e)
            continue

只需执行
pd.read\u csv(路径到\u read\u csv\u文件)
谢谢您的解释。但这些代码只存储最后一行。我只需要使用line,它可以工作,但我无法在每一行达到一个特定的键值。请看编辑后的版本。你能举例说明你到底想达到什么目的吗?比如什么是你的程序的输入,什么是你期望的输出?我有一个很大的csv文件的评论:id,姓名,评论。。。2302734,大卫,这是一家非常好的餐厅。。。我想过滤一些并存储新版本。main.csv->edited.csv您可以将您的问题更新为更能说明您想要实现的目标的内容,即读取csv,过滤条目,然后保存它。然后我可以编辑我的答案,让你知道怎么做。顺便说一下,我可以帮你。