在Pandas中合并两个DataFrame可以使用merge函数。下面提供一个完整的攻略以及实例说明:
1. 根据特定列合并
假设我们有两个DataFrame,一个是购物清单,另一个是购物明细,它们共同拥有一个列“购物编号”,我们想要将其合并为一个DataFrame。
购物清单DataFrame:
购物编号 | 用户名 | 日期 |
---|---|---|
1 | 张三 | 2021-01-01 |
2 | 李四 | 2021-01-02 |
3 | 王五 | 2021-01-03 |
购物明细DataFrame:
购物编号 | 商品编号 | 数量 |
---|---|---|
1 | 101 | 2 |
1 | 102 | 1 |
2 | 103 | 3 |
3 | 104 | 1 |
3 | 105 | 2 |
使用merge函数将它们合并:
import pandas as pd
df1 = pd.DataFrame({'购物编号': [1, 2, 3], '用户名': ['张三', '李四', '王五'], '日期': ['2021-01-01', '2021-01-02', '2021-01-03']})
df2 = pd.DataFrame({'购物编号': [1, 1, 2, 3, 3], '商品编号': [101, 102, 103, 104, 105], '数量': [2, 1, 3, 1, 2]})
df = df1.merge(df2, on='购物编号')
print(df)
输出结果:
购物编号 | 用户名 | 日期 | 商品编号 | 数量 |
---|---|---|---|---|
1 | 张三 | 2021-01-01 | 101 | 2 |
1 | 张三 | 2021-01-01 | 102 | 1 |
2 | 李四 | 2021-01-02 | 103 | 3 |
3 | 王五 | 2021-01-03 | 104 | 1 |
3 | 王五 | 2021-01-03 | 105 | 2 |
2. 按照多个列合并
merge函数还支持按照多个列进行合并。我们继续以购物清单和购物明细为例,这次我们希望在第一步的基础上,再按照“商品编号”列合并。
购物清单DataFrame:
购物编号 | 用户名 | 日期 |
---|---|---|
1 | 张三 | 2021-01-01 |
2 | 李四 | 2021-01-02 |
3 | 王五 | 2021-01-03 |
购物明细DataFrame:
购物编号 | 商品编号 | 数量 |
---|---|---|
1 | 101 | 2 |
1 | 102 | 1 |
2 | 103 | 3 |
3 | 104 | 1 |
3 | 105 | 2 |
合并后的DataFrame:
购物编号 | 用户名 | 日期 | 商品编号 | 数量 |
---|---|---|---|---|
1 | 张三 | 2021-01-01 | 101 | 2 |
1 | 张三 | 2021-01-01 | 102 | 1 |
2 | 李四 | 2021-01-02 | 103 | 3 |
3 | 王五 | 2021-01-03 | 104 | 1 |
3 | 王五 | 2021-01-03 | 105 | 2 |
使用merge函数将它们合并:
import pandas as pd
df1 = pd.DataFrame({'购物编号': [1, 2, 3], '用户名': ['张三', '李四', '王五'], '日期': ['2021-01-01', '2021-01-02', '2021-01-03']})
df2 = pd.DataFrame({'购物编号': [1, 1, 2, 3, 3], '商品编号': [101, 102, 103, 104, 105], '数量': [2, 1, 3, 1, 2]})
df = df1.merge(df2, on=['购物编号', '商品编号'])
print(df)
输出结果:
购物编号 | 用户名 | 日期 | 商品编号 | 数量 |
---|---|---|---|---|
1 | 张三 | 2021-01-01 | 101 | 2 |
1 | 张三 | 2021-01-01 | 102 | 1 |
2 | 李四 | 2021-01-02 | 103 | 3 |
3 | 王五 | 2021-01-03 | 104 | 1 |
3 | 王五 | 2021-01-03 | 105 | 2 |
3. 按照索引合并
有时候,我们需要按照DataFrame的索引进行合并。Pandas提供了join函数来实现这个功能。下面以两个DataFrame为例,它们的索引都是日期。
第一个DataFrame:
A | B | C | |
---|---|---|---|
202101 | 1 | 2 | 3 |
202102 | 4 | 5 | 6 |
202103 | 7 | 8 | 9 |
第二个DataFrame:
D | E | |
---|---|---|
202101 | 1 | 2 |
202102 | 3 | 4 |
202103 | 5 | 6 |
使用join函数将它们合并:
import pandas as pd
df1 = pd.DataFrame({'A': [1, 4, 7], 'B': [2, 5, 8], 'C': [3, 6, 9]}, index=[202101, 202102, 202103])
df2 = pd.DataFrame({'D': [1, 3, 5], 'E': [2, 4, 6]}, index=[202101, 202102, 202103])
df = df1.join(df2)
print(df)
输出结果:
A | B | C | D | E | |
---|---|---|---|---|---|
202101 | 1 | 2 | 3 | 1 | 2 |
202102 | 4 | 5 | 6 | 3 | 4 |
202103 | 7 | 8 | 9 | 5 | 6 |
以上就是合并两个Pandas DataFrames的完整攻略及实例说明。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:在某些列上合并两个Pandas DataFrames - Python技术站