我正在使用Pandas加载CSV,然后执行一些操作、数据操作等。一切都开始得非常简单:
import pandas as pd
df = pd.read_csv("file.csv", header=7)
在所有操作之后,数据将被导出到CSV、JSON或类似的文件中,以便导入数据库。有一个原始CSV行号和行内容的记录会很有用,这样我们就可以回溯以后发现的任何问题。有可能吗?应该怎么做?你知道吗
例如,我从:
name, height
Arnold Schwarzenegger, 188
Danny De Vito, 147
我将数据处理为:
[{"first_name": "Arnold", "last_name": "Schwarzenegger", "height": 1.88},
{"first_name": "Danny De", "last_name": "Vito", "height": 1.47}]
然后导入数据库(在生产环境中运行的PostgreSQL)。后来我们发现丹尼·德维托的名字被篡改了,是处理过程还是原始数据?所以,我想把数据导出到:
[{"first_name": "Arnold", "last_name": "Schwarzenegger", "height": 1.88,
"csv_line_number": 1, "csv_line": "Arnold Schwarzenegger, 188"},
{"first_name": "Danny De", "last_name": "Vito", "height": 1.47,
"csv_line_number": 2, "csv_line": "Danny De Vito, 147"}]
因此,只要检查数据库,我们就可以开始了解发生了什么。你知道吗
到目前为止,“事后回溯”最安全、最简单的方法就是简单地重复:
…然后用它来做你想做的任何验证。你知道吗
在要复制数据帧的场景中,最好使用:
…这样你就可以确保得到一份完整的副本。此副本还可以避免由于更改helper函数内的数据帧或其他类似情况而导致的破坏。你知道吗
如果您的数据集非常大,并且复制不是一个好主意,并且出于某种原因只是重复读取原始csv(这将是最安全的),那么需要更多关于您要执行的验证类型的信息。例如,只要存储从
df.describe()
得到的信息,就可以为以后的验证提供一个相对良好的基础。但这同样取决于这个系统的重要性。你知道吗如果这个案例只是解决“如何把原来的行号和一个CSV文件的整行已经打开了pd.read\U csv文件()作为“数据帧”中的新列,您可以通过以下方式完成:
您的数据帧现在有两个新列:
请注意,我不会使用
df.reset_index()
作为生成行号索引的方法,因为这是一种糟糕的做法,在其他情况下会导致问题。你知道吗相关问题 更多 >
编程相关推荐