我有大约100个csv文件。它们中的每一个都被写入到自己的pandas数据框中,然后再合并,最后写入数据库。在
每个csv文件包含1000行和816列。在
问题是:
每个csv文件包含816列,但并非所有列都包含数据。因此,一些csv文件未对齐-数据已向左移动,但列尚未删除。在
下面是一个虚构的例子:
CSV文件A(正确):
Name Age City
Joe 18 London
Kate 19 Berlin
Math 20 Paris
CSV文件B(带有错误标记):
^{pr2}$我想合并A和B,但我目前的解决方案导致了一个不一致。在
我不确定用SQL还是Python处理这个问题更容易,但我希望你们中的一些人能想出一个好的解决方案。在
当前合并数据帧的解决方案如下:
def merge_pandas(csvpaths):
list = []
for path in csvpaths:
frame = pd.read_csv(sMainPath + path, header=0, index_col = None)
list.append(frame)
return pd.concat(list)
提前谢谢。在
对于这些类型的问题,一个通用的解决方案很可能是过火了。我们注意到,唯一可能的错误是,当一个值从属于它的位置写到左边的列时。在
如果您的问题比您给出的两列示例更复杂,为了方便起见,您应该有一个包含预期列类型的数组。在
接下来,我会设置一个标记来识别缺陷:
^{pr2}$脚本可以确定地检测到错误
在您的简单场景中,每当出现错误时,我们可以简单地检查第一列中的值。在
NaN
)在你的小例子中,那将是
如果您有两个以上的列,请使用
types
变量进行迭代检查,以找出NaN
所属的位置。在脚本无法确定错误
例如,如果两个相邻的列都是字符串值。那样的话,你就完了。使用第二个标记保存这些列并手动执行。当然,您可以进行高级检查(它应该是城市名称,检查值是否是城市名称),但这可能是过火了,手动执行会更快。在
相关问题 更多 >
编程相关推荐