pandas合并dataframe
在数据分析和处理中,经常会遇到需要合并不同dataframe的情况。pandas库提供了多种方法来实现这一目的,本文将详细介绍几种常见的dataframe合并方式,以及它们的应用场景和用法。
concat
concat
方法可以沿着指定的轴(axis)将多个dataframe进行合并。比如,可以将多个行数相同的dataframe按行合并,也可以将多个列数相同的dataframe按列合并。下面是一个简单的示例:
import pandas as pd
data1 = {'A': [1, 2, 3], 'B': [4, 5, 6]}
data2 = {'A': [7, 8, 9], 'B': [10, 11, 12]}
df1 = pd.DataFrame(data1)
df2 = pd.DataFrame(data2)
result = pd.concat([df1, df2])
print(result)
运行结果如下:
A B
0 1 4
1 2 5
2 3 6
0 7 10
1 8 11
2 9 12
可以看到,concat
方法将两个dataframe按行合并了起来,并重新生成了索引。
merge
merge
方法可以根据指定的列进行数据合并,默认是按照相同的列名进行合并。下面是一个示例:
data1 = {'key': ['K0', 'K1', 'K2', 'K3'],
'A': ['A0', 'A1', 'A2', 'A3'],
'B': ['B0', 'B1', 'B2', 'B3']}
df1 = pd.DataFrame(data1)
data2 = {'key': ['K0', 'K1', 'K2', 'K4'],
'C': ['C0', 'C1', 'C2', 'C4'],
'D': ['D0', 'D1', 'D2', 'D4']}
df2 = pd.DataFrame(data2)
result = pd.merge(df1, df2, on='key')
print(result)
运行结果如下:
key A B C D
0 K0 A0 B0 C0 D0
1 K1 A1 B1 C1 D1
2 K2 A2 B2 C2 D2
可以看到,merge
方法根据key
列将两个dataframe进行了合并,只保留了两个dataframe中key
列相同的行。
join
join
方法可以根据索引(index)进行合并。默认情况下,join
方法是按照两个dataframe的索引(index)进行合并。下面是一个示例:
data1 = {'A': [1, 2, 3],
'B': [4, 5, 6]}
df1 = pd.DataFrame(data1, index=['a', 'b', 'c'])
data2 = {'C': [11, 12, 13],
'D': [14, 15, 16]}
df2 = pd.DataFrame(data2, index=['a', 'b', 'd'])
result = df1.join(df2, how='inner')
print(result)
运行结果如下:
A B C D
a 1 4 11 14
b 2 5 12 15
可以看到,join
方法根据索引(index)将两个dataframe进行了合并,只保留了两个dataframe中索引相同的行。
append
append
方法用于在一个dataframe的末尾添加另一个dataframe。下面是一个示例:
data1 = {'A': [1, 2, 3],
'B': [4, 5, 6]}
df1 = pd.DataFrame(data1)
data2 = {'A': [7, 8, 9],
'B': [10, 11, 12]}
df2 = pd.DataFrame(data2)
result = df1.append(df2)
print(result)
运行结果如下:
A B
0 1 4
1 2 5
2 3 6
0 7 10
1 8 11
2 9 12
可以看到,append
方法将df2添加到df1的末尾。
通过以上几种方法,可以实现对不同dataframe的合并操作,根据实际情况选择合适的方法会更加高效和灵活。