我有2个不同的CSV文件。两个文件都有标题。大多数列都是相同的。有时,它们会有所不同。
File1.csv
Name Username Alias1
Tom Tomfoolery TJZ
Meryl MsMeryl Mer
Timmy Midsize Yoda
File2.csv
Name Username Alias 1 Alias 2
Bob Firedbob Fire Gingy
Tom Tomfoolery TJZ Awww
DesiredFile.csv
Name Username Alias1 Alias 2
Tom Tomfoolery TJZ NA (or blank)
Meryl MsMeryl Mer NA (or blank)
Timmy Midsize Yoda NA (or blank)
Bob Firedbob Fire Gingy
Tom Tomfoolery TJZ Awww
所以基本上,我想要合并两个文件。我希望所有的行都能保持战略。我不想组合合并行。这很重要,因为有时我需要保留重复数据。
我想要合并2个文件,但标题/列有所不同。
如果BOTH文件中存在一列,我希望该行的数据属于该列(EX:name)
如果某个列存在于一个文件中,我希望该文件中该列的所有内容都保留,但其他的"行"在他们的文件中没有该列的NA,N / A,空白,等等。
大熊猫可以轻松做到吗?我已经尝试了几种不同的方式,但还没有发现任何神奇的东西。
答案 0 :(得分:0)
您可以使用pd.concat
。它连接DataFrames并使用NaN自动填充缺失值:
import numpy as np
import pandas as pd
try:
# for Python2
from cStringIO import StringIO
except ImportError:
# for Python3
from io import StringIO
df1 = pd.read_table(StringIO('''
Name Username Alias1
Tom Tomfoolery TJZ
Meryl MsMeryl Mer
Timmy Midsize Yoda'''), sep='\s+')
df2 = pd.read_table(StringIO('''
Name Username Alias1 Alias2
Bob Firedbob Fire Gingy
Tom Tomfoolery TJZ Awww'''), sep='\s{2,}')
result = pd.concat([df1, df2], axis=0)
print(result)
产量
Alias1 Alias2 Name Username
0 TJZ NaN Tom Tomfoolery
1 Mer NaN Meryl MsMeryl
2 Yoda NaN Timmy Midsize
0 Fire Gingy Bob Firedbob
1 TJZ Awww Tom Tomfoolery
请注意,列名显然对空格敏感 - Alias1
与Alias 1
不同。因此,为了获得所需的结果,我必须修改File2.csv数据以删除Alias 1
中的空格。