Python 即使列不匹配也添加行

Python 即使列不匹配也添加行,python,pandas,Python,Pandas,我有一个excel工作表,加载到数据框中,其tail()如下所示 ix date Type Value1 Value2 Value3 ------------------------------------------- 651 01.02.2021 A 105 135 81 652 01.02.2021 B 3 10 1 653 01.02.2021 C 108 145 82 0

我有一个excel工作表,加载到数据框中,其
tail()
如下所示

ix     date   Type    Value1  Value2  Value3
-------------------------------------------
651 01.02.2021  A    105       135    81
652 01.02.2021  B      3        10     1
653 01.02.2021  C    108       145    82
0          02.02.2021   02.02.2021  02.02.2021
1              A            B           C
Value1        110           4          114
Val2          142          15          157
Value3         96           2           98
我有另一个数据帧,它看起来像这样

ix     date   Type    Value1  Value2  Value3
-------------------------------------------
651 01.02.2021  A    105       135    81
652 01.02.2021  B      3        10     1
653 01.02.2021  C    108       145    82
0          02.02.2021   02.02.2021  02.02.2021
1              A            B           C
Value1        110           4          114
Val2          142          15          157
Value3         96           2           98
我想将后一个数据帧添加到第一个数据帧的末尾


我尝试了
append()
pd.concat
,但由于列名并不总是匹配(
Value2!=Val2
),如果第一个数据帧是df1,第二个是df2,则结果列中的值最终为
NaN

首先转置df2并重置索引:

df3 = df2.T.reset_index()
df2.index = df2.index.map(mapping )
如果dataframe df2的格式始终相同,则可以简单地覆盖列名:

df3.columns = df1.columns
然后是康卡特:

df = pd.concat([df1,df3],axis=0)
如果df2的顺序不总是相同的,并且拼写错误可能不同,则必须首先识别所有可能的拼写错误,例如,将它们保存在字典中,如下所示:

mapping = {"Value1":"Value1","Value2":"Value2","Value3":"Value3","Val2":"Value2"}
然后假设值字符串位于df2的索引中,则覆盖索引:

df3 = df2.T.reset_index()
df2.index = df2.index.map(mapping )

之后,您可以执行上述步骤。

谢谢!我使用了你的第一个建议,因为映射将成为一个乏味的手动操作,容易出现很多很多打字错误。