Python 即使列不匹配也添加行
我有一个excel工作表,加载到数据框中,其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
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 )
之后,您可以执行上述步骤。谢谢!我使用了你的第一个建议,因为映射将成为一个乏味的手动操作,容易出现很多很多打字错误。