pandas中dataframe如何做数据拼接
目录
1. 垂直拼接(Vertical Concatenation)
2. 水平拼接(Horizontal Concatenation)
在Pandas中,数据拼接指的是将多个DataFrame对象组合成一个更大的DataFrame。Pandas提供了多种方法来进行数据拼接,主要可以分为垂直拼接(沿着行方向拼接)和水平拼接(沿着列方向拼接)。
1. 垂直拼接(Vertical Concatenation)
垂直拼接通常使用 pd.concat() 函数来完成。在这个过程中,多个DataFrame将会按照行(axis=0)的方向进行堆叠。
示例代码:
import pandas as pd
# 创建两个示例DataFrame
df1 = pd.DataFrame({
'A': ['A0', 'A1', 'A2', 'A3'],
'B': ['B0', 'B1', 'B2', 'B3'],
'C': ['C0', 'C1', 'C2', 'C3'],
'D': ['D0', 'D1', 'D2', 'D3']
})
df2 = pd.DataFrame({
'A': ['A4', 'A5', 'A6', 'A7'],
'B': ['B4', 'B5', 'B6', 'B7'],
'C': ['C4', 'C5', 'C6', 'C7'],
'D': ['D4', 'D5', 'D6', 'D7']
})
# 垂直拼接df1和df2
result = pd.concat([df1, df2], axis=0, ignore_index=True)
print(result)
运行结果:
示例:
2. 水平拼接(Horizontal Concatenation)
水平拼接同样使用 pd.concat() 函数,但这次是沿着列(axis=1)的方向进行拼接。
示例代码:
# 创建两个不同的DataFrame,列名不同
df3 = pd.DataFrame({
'A': ['A0', 'A1', 'A2', 'A3'],
'B': ['B0', 'B1', 'B2', 'B3'],
'C': ['C0', 'C1', 'C2', 'C3'],
'D': ['D0', 'D1', 'D2', 'D3']
})
df4 = pd.DataFrame({
'A': ['A4', 'A5', 'A6', 'A7'],
'E': ['E4', 'E5', 'E6', 'E7'],
'F': ['F4', 'F5', 'F6', 'F7']
})
# 水平拼接df3和df4
result = pd.concat([df3, df4], axis=1)
print(result)
运行结果:
示例:
3. 数据合并(Joining DataFrames)
除了简单的拼接外,你还可以使用 merge() 和 join() 方法来基于键(key)合并DataFrame。
示例代码:
# 创建两个具有公共键的DataFrame
df_left = pd.DataFrame({
'key': ['K0', 'K1', 'K2', 'K3'],
'A': ['A0', 'A1', 'A2', 'A3'],
'B': ['B0', 'B1', 'B2', 'B3']
})
df_right = pd.DataFrame({
'key': ['K0', 'K1', 'K2', 'K3'],
'C': ['C0', 'C1', 'C2', 'C3'],
'D': ['D0', 'D1', 'D2', 'D3']
})
# 使用merge按key合并
merged_result = pd.merge(df_left, df_right, on='key')
print(merged_result)
运行结果:
4. 注意事项
- 在使用 pd.concat() 时,如果DataFrame的索引不匹配,默认情况下会保留所有的索引。可以通过设置参数 ignore_index=True 来重置索引。
- 使用 merge() 和 join() 时,需要确保至少有一个公共的键来连接数据。
- 在拼接之前,检查DataFrame是否有相同的行数(如果是水平拼接)或相同的列数(如果是垂直拼接),以避免错误。
原文地址:https://blog.csdn.net/qq_41797451/article/details/142971009
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!