Pandas 在 for 循环中生成的 dataframe 进行合并

Pandas 在 for 循环中生成的 dataframe 进行合并

在数据分析中,有时需要将多个 dataframe 合并成一个,就需要用到 Pandas 库中的 concat 或者 append 函数。在某些情况下,我们需要在 for 循环中,逐步获取数据并将每个小 dataframe 逐个合并成一个较大的 dataframe。本文将介绍如何使用 Pandas 中的 append 函数,实现 for 循环内多个 dataframe 的逐步合并。

阅读更多:Pandas 教程

生成 Small DataFrame

我们将首先以示例方式在 for 循环中生成几个小 dataframe:

import pandas as pd
import numpy as np

# 定义一个空的 dataframe
df = pd.DataFrame()

# 使用 for 循环生成三个小 dataframe
for i in range(3):
    # 生成 3 行 2 列的随机数 dataframe
    temp_df = pd.DataFrame(np.random.randn(3, 2))
    df = df.append(temp_df)

# 输出结果
print(df)

这里,我们首先定义一个空的 dataframe df,然后在 for 循环中,生成 3 个每个都有 3 行 2 列的 dataframe。我们将每个新生成的小 dataframe 追加到主 dataframe df 中,最后输出结果。

这是输出的结果:

          0         1
0 -0.320174 -1.574903
1 -0.082874  0.726821
2  0.990899  0.555164
0  0.466403  0.838717
1 -0.971818 -0.335975
2  0.919537  0.280364
0 -1.322064  0.187607
1 -0.117047 -0.446846
2 -2.038213  1.156064

我们可以看到,新生成的小 dataframe 分别在 df 的下方相继追加,并形成了一个较大的 dataframe。

使用 Python List 进行逐步合并

为了更深入的理解 append 函数的使用方法,我们可以使用 Python List 先将数据收集起来,再使用 Pandas 的 append 函数进行合并。用例子来说明:

import pandas as pd
import numpy as np

# 定义一个空的 list
dfs = []

# 使用 for 循环生成三个小 dataframe 并加入到 list 中
for i in range(3):
    # 生成 3 行 2 列的随机数 dataframe
    temp_df = pd.DataFrame(np.random.randn(3, 2))
    dfs.append(temp_df)

# 使用 concat 函数将 list 中的 dataframe 逐个合并成一个
df = pd.concat(dfs)

# 输出结果
print(df)

这里,我们首先定义一个空的 list dfs,在 for 循环中,生成 3 个每个都有 3 行 2 列的 dataframe,将每个新生成的小 dataframe 追加到 list dfs 中。最后,我们将 list dfs 中的数据逐个合并成一个新的 dataframe df。

这是输出的结果:

          0         1
0  0.343550  1.964070
1 -0.423888 -0.150231
2 -0.001182 -1.026652
0 -0.121498  0.802426
1 -0.064473  0.763655
2 -0.503633  0.154764
0 -0.975068 -2.016786
1  1.015142 -0.209288
2 -0.781382 -0.240853

我们可以看到,新生成的小 dataframe 分别在新的 dataframe df 的下方相继追加,并形成了一个较大的 dataframe。

使用 append 函数逐步合并

Pandas 中的 append 函数也可以实现之前我们使用的 Python List 的方式。改写以上代码:

import pandas as pd
import numpy as np

# 定义一个空的 dataframe df
df = pd.DataFrame()

# 使用 for 循环生成三个小 dataframe 并加入到主 dataframe df 中
for i in range(3):
    # 生成 3 行 2 列的随机数 dataframe,并将其追加到主 dataframe df 中
    temp_df = pd.DataFrame(np.random.randn(3, 2))
    df = df.append(temp_df)

# 输出结果
print(df)

以上代码与最初的示例相同,只是我们用了 append 函数来合并 dataframe。

这是输出的结果:

          0         1
0  1.034431 -0.113274
1 -0.972332  1.399338
2  0.171920 -1.079661
0  0.722176  0.069692
1  1.369664 -0.502429
2  0.179894 -0.872476
0  0.318877  1.172474
1 -0.268064 -0.722245
2  0.994986  0.967590

我们可以看到,新生成的小 dataframe 分别在新的 dataframe df 的下方相继追加,并形成了一个较大的 dataframe。

总结

在数据分析中,合并多个 dataframe 是很常见的操作,特别是在 for 循环中逐步生成的情况下。本文介绍了如何使用 Pandas 中的 append 函数逐步合并多个 dataframe,并给出了示例代码。同时,我们也看到了使用 Python List 先将数据收集起来,再使用 Pandas 的 concat 函数进行合并的方式。无论是哪种方式,都是很实用的数据合并方法,不同需求需要不同的方法来完成。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程