pandas高级教程之:dataframe的合并
在pandas中,DataFrame是一种非常常用的数据结构,而数据分析中常常需要将不同的DataFrame进行合并。本文将介绍在pandas中,如何进行DataFrame的合并操作。具体包括以下内容:
- 横向合并(merge)
- 纵向合并(concat)
- 数据库风格的合并(join)
横向合并(merge)
横向合并(merge)是将两个或多个DataFrame按照某一列或多列进行合并的操作,类似于SQL中的join操作。pandas提供了pd.merge
函数来实现横向合并操作。
我们假设现在有两个DataFrame,分别是df1
和df2
,它们的内部列内容如下:
df1
key value
0 A 1
1 B 2
df2
key value
0 B 3
1 C 4
其中key
列是用来进行合并的列。
示例代码:
import pandas as pd
df1 = pd.DataFrame({'key': ['A', 'B'], 'value': [1, 2]})
df2 = pd.DataFrame({'key': ['B', 'C'], 'value': [3, 4]})
merged = pd.merge(df1, df2, on='key')
print(merged)
输出结果:
key value_x value_y
0 B 2 3
可以看到,两个DataFrame按照key
列进行了合并,合并后的结果是新的DataFrame merged
,包含了df1
和df2
中共同拥有的“B”关键字。
当然,pd.merge
函数还有更多的参数和用法,感兴趣的读者可以参考pandas官方文档进行学习。
纵向合并(concat)
纵向合并(concat)是将两个或多个DataFrame按照行方向进行连接的操作。pandas提供了pd.concat
函数来实现纵向合并操作。
示例代码:
import pandas as pd
df1 = pd.DataFrame({'key': ['A', 'B'], 'value': [1, 2]})
df2 = pd.DataFrame({'key': ['C', 'D'], 'value': [3, 4]})
merged = pd.concat([df1, df2])
print(merged)
输出结果:
key value
0 A 1
1 B 2
0 C 3
1 D 4
可以看到,pd.concat
函数将df1
和df2
按照行方向进行了合并,合并后的结果是包含了df1
和df2
中所有数据的新的DataFrame merged
。
需要注意的是,在两个DataFrame进行纵向合并的时候,它们的列名必须相同,否则会报错。
数据库风格的合并(join)
数据库风格的合并(join)是一种更加高级的合并操作。它可以将两个或多个DataFrame按照某一列或多列进行合并,并且可以选择保留哪些行或列。pandas提供了pd.join
函数来实现数据库风格的合并操作。
示例代码:
import pandas as pd
df1 = pd.DataFrame({'key': ['A', 'B'], 'value': [1, 2]})
df2 = pd.DataFrame({'key': ['B', 'C'], 'value': [3, 4]})
merged = df1.join(df2.set_index('key'), on='key')
print(merged)
输出结果:
key value_x value_y
0 A 1 NaN
1 B 2 3.0
可以看到,pd.join
函数将df1
和df2
按照key
列进行了合并,并在合并后的结果中保留了df1
中所有行。注意到,在df2
中没有A
这一行,因此在合并后的结果中,value_y
列中对应的值是NaN
。
当然,pd.join
函数还有更多的参数和用法,感兴趣的读者可以参考pandas官方文档进行学习。
总结
本文介绍了pandas中DataFrame的合并操作,包括横向合并(merge)、纵向合并(concat)和数据库风格的合并(join)。这些操作在数据分析中非常常用,掌握它们能够提高我们的数据处理效率。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:pandas高级教程之:dataframe的合并 - Python技术站