7.3 KiB
在 Python 中连接数据帧
原文:https://www.pythonforbeginners.com/basics/concatenate-dataframes-in-python
我们使用 python 中的数据帧来处理和分析 python 中的表格数据。在本文中,我们将讨论如何在 python 中连接两个或多个数据帧。
Python 中如何连接数据帧?
要在 python 中连接两个或多个数据帧,我们可以使用 pandas 模块中定义的concat()方法。concat()方法将一列数据帧作为其输入参数,并垂直连接它们。
我们还可以使用concat()方法的 axis 参数水平连接 python 中的数据帧。axis 参数的默认值为 0,表示数据帧将垂直连接。如果要水平连接数据帧,可以将值 1 传递给轴参数。
执行后,concat()方法将返回结果数据帧。
在 python 中垂直连接数据帧
要在 python 中垂直连接两个数据帧,首先需要使用 import 语句导入 pandas 模块。之后,您可以使用concat() 方法连接数据帧,如下所示。
import numpy as np
import pandas as pd
df1=pd.read_csv("grade1.csv")
print("First dataframe is:")
print(df1)
df2=pd.read_csv("grade2.csv")
print("second dataframe is:")
print(df2)
df3=pd.concat([df1,df2])
print("Merged dataframe is:")
print(df3)
输出:
First dataframe is:
Class Roll Name Marks Grade
0 1 11 Aditya 85 A
1 1 12 Chris 95 A
2 1 14 Sam 75 B
3 1 16 Aditya 78 B
4 1 15 Harry 55 C
5 2 1 Joel 68 B
6 2 22 Tom 73 B
7 2 15 Golu 79 B
second dataframe is:
Class Roll Name Marks Grade
0 2 27 Harsh 55 C
1 2 23 Clara 78 B
2 3 33 Tina 82 A
3 3 34 Amy 88 A
4 3 15 Prashant 78 B
5 3 27 Aditya 55 C
6 3 23 Radheshyam 78 B
7 3 11 Bobby 50 D
Merged dataframe is:
Class Roll Name Marks Grade
0 1 11 Aditya 85 A
1 1 12 Chris 95 A
2 1 14 Sam 75 B
3 1 16 Aditya 78 B
4 1 15 Harry 55 C
5 2 1 Joel 68 B
6 2 22 Tom 73 B
7 2 15 Golu 79 B
0 2 27 Harsh 55 C
1 2 23 Clara 78 B
2 3 33 Tina 82 A
3 3 34 Amy 88 A
4 3 15 Prashant 78 B
5 3 27 Aditya 55 C
6 3 23 Radheshyam 78 B
7 3 11 Bobby 50 D
如果所有数据帧具有相同的列数,并且列名也相同,则结果数据帧具有与输入数据帧相同的列数。你可以在上面的例子中观察到这一点。
然而,如果一个数据帧的列数少于其他数据帧,则对于从该数据帧获得的行,该列在结果数据帧中的对应值将是 NaN。您可以在下面的示例中观察到这一点。
import numpy as np
import pandas as pd
df1=pd.read_csv("grade_with_roll.csv")
print("First dataframe is:")
print(df1)
df2=pd.read_csv("grade_with_name.csv")
print("second dataframe is:")
print(df2)
df3=pd.concat([df1,df2])
print("Merged dataframe is:")
print(df3)
输出:
First dataframe is:
Roll Marks Grade
0 11 85 A
1 12 95 A
2 13 75 B
3 14 75 B
4 16 78 B
5 15 55 C
6 20 72 B
7 24 92 A
second dataframe is:
Roll Name Marks Grade
0 11 Aditya 85 A
1 12 Chris 95 A
2 13 Sam 75 B
3 14 Joel 75 B
4 16 Tom 78 B
5 15 Samantha 55 C
6 20 Tina 72 B
7 24 Amy 92 A
Merged dataframe is:
Roll Marks Grade Name
0 11 85 A NaN
1 12 95 A NaN
2 13 75 B NaN
3 14 75 B NaN
4 16 78 B NaN
5 15 55 C NaN
6 20 72 B NaN
7 24 92 A NaN
0 11 85 A Aditya
1 12 95 A Chris
2 13 75 B Sam
3 14 75 B Joel
4 16 78 B Tom
5 15 55 C Samantha
6 20 72 B Tina
7 24 92 A Amy
如果数据帧具有不同的列名,则在结果数据帧中,每个列名将被分配一个单独的列。此外,对于所获得的数据帧中没有指定列的行,该列的结果数据帧中的相应值将是 NaN。
建议阅读:如果你对机器学习感兴趣,可以阅读这篇关于机器学习中回归的文章。您可能也会喜欢这篇关于带有数字示例的 k 均值聚类的文章。
在 Python 中水平连接数据帧
为了水平连接数据帧,我们将使用 axis 参数,并在concat() 方法中给出值 1 作为它的输入。执行后,concat()方法将返回水平连接的 dataframe,如下所示。
import numpy as np
import pandas as pd
df1=pd.read_csv("grade_with_roll.csv")
print("First dataframe is:")
print(df1)
df2=pd.read_csv("grade_with_name.csv")
print("second dataframe is:")
print(df2)
df3=pd.concat([df1,df2],axis=1)
print("Merged dataframe is:")
print(df3)
输出:
First dataframe is:
Roll Marks Grade
0 11 85 A
1 12 95 A
2 13 75 B
3 14 75 B
4 16 78 B
5 15 55 C
6 20 72 B
7 24 92 A
second dataframe is:
Roll Name Marks Grade
0 11 Aditya 85 A
1 12 Chris 95 A
2 13 Sam 75 B
3 14 Joel 75 B
4 16 Tom 78 B
5 15 Samantha 55 C
6 20 Tina 72 B
7 24 Amy 92 A
Merged dataframe is:
Roll Marks Grade Roll Name Marks Grade
0 11 85 A 11 Aditya 85 A
1 12 95 A 12 Chris 95 A
2 13 75 B 13 Sam 75 B
3 14 75 B 14 Joel 75 B
4 16 78 B 16 Tom 78 B
5 15 55 C 15 Samantha 55 C
6 20 72 B 20 Tina 72 B
7 24 92 A 24 Amy 92 A
如果正在连接的数据帧具有相同数量的记录,则生成的数据帧将不具有任何 NaN 值,如上例所示。但是,如果一个数据帧的行数少于另一个数据帧,则结果数据帧将具有 NaN 值。当连接参数设置为“外部”时,会出现这种情况。
结论
在本文中,我们讨论了如何用 python 连接两个熊猫数据帧。要连接两个以上的数据帧,只需将数据帧添加到数据帧列表中,该列表作为输入提供给concat()方法。
要了解更多关于 python 编程的知识,你可以阅读这篇关于 python 中的字典理解的文章。你可能也会喜欢这篇关于用 python 理解列表的文章。