pandas中的concat函数拼接多张表时,为什么拼接后的结果除第一张表其他都是NaN

Posted 知行博士

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pandas中的concat函数拼接多张表时,为什么拼接后的结果除第一张表其他都是NaN相关的知识,希望对你有一定的参考价值。

例如在一个文件夹中有这样一些文件。在数据处理过程中,我们想要将它们拼接为一个文件。

其中每一个文件都有着相同列,如下:

我们使用了pandas中的concat函数进行拼接,拼接结果如下:

我们发现除了第一张表之外,其他都是表并未正确拼接,显示为NaN。这是因为在concat过程中如果不同的DataFrame具有不同的列名,则在默认情况下,那些在其他DataFrame中缺失的列将是NaN。 要解决这个问题,可以指定参数ignore_index=True,以在concat过程中忽略列名。

concat是 Pandas 中一个用于横向和纵向拼接 DataFrame 的方法。它的使用方法如下:

其中,df1, df2, df3 是要拼接的 DataFrame,axis=0 表示纵向拼接(合并行)。如果要横向拼接(合并列),则 axis=1

另外,还有其它的几种可能:

  1. 在读取每个文件之前,检查文件是否具有相同的数据类型,以确保每个文件都具有相同的列名和相同的数据类型。

  2. 在调用pd.concat()函数之前,检查每个数据框是否具有相同的列名(包括有否列名前是否有空格),如果存在列名不匹配的问题,您可以将其修改为相同的列名,以确保数据帧可以正确合并。

  3. 如果上述方法都不起作用,请考虑打印数据帧并手动检查是否存在任何错误,然后再尝试修复它们。

这里官方文档关于concat函数的解释:pandas.concat — pandas 1.5.3 documentation

想进一步了解的可以去看一下。

以上是关于pandas中的concat函数拼接多张表时,为什么拼接后的结果除第一张表其他都是NaN的主要内容,如果未能解决你的问题,请参考以下文章

pandas的拼接操作

Python数据分析库pandas ------ mergeconcatenation pd.concat合并与拼接

23、pandas的多列拼接成一列函数.str.cat()

DataFrame 的拼接

pandas的concat方法

pandas使用pd.concat横向合并多个dataframe实战:多个dataframe的横向表拼接(行对齐)多个dataframe的横向表拼接(指定join参数交集还是并集)