自学内容网 自学内容网

pandas中dataframe如何做数据拼接

目录

1. 垂直拼接(Vertical Concatenation)

2. 水平拼接(Horizontal Concatenation)

3. 数据合并(Joining DataFrames)

4. 注意事项


在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)!