欢迎访问宙启技术站
智能推送

pandasDataFramejoin()函数实现表格按条件合并操作

发布时间:2023-12-28 23:22:11

pandas中的DataFrame.join()函数可以根据指定的列或索引对多个DataFrame进行合并操作。它可以根据多个DataFrame中的共同列或索引进行连接,并返回合并后的结果。

join()函数的用法如下:

DataFrame.join(other, on=None, how='left', lsuffix='', rsuffix='')

其中参数说明如下:

- other:用于连接的另一个DataFrame或Series。

- on:连接的列名或索引名称,如果为None,则根据两个DataFrame中的共同列名进行连接。

- how:连接方式,默认为'left'。可选值包括'left'、'right'、'outer'、'inner',分别表示左连接、右连接、外连接、内连接。

- lsuffix:添加到左侧DataFrame中冲突列的后缀。

- rsuffix:添加到右侧DataFrame中冲突列的后缀。

下面通过一个具体的例子来说明join()函数的用法。

假设有两个DataFrame,分别为df1和df2,它们的结构如下:

df1:
   A   B
0  1  10
1  2  20
2  3  30

df2:
   A   C
0  1  100
1  2  200
2  4  400

现在我们要根据df1和df2中的列A进行合并操作。

import pandas as pd

# 定义df1和df2
df1 = pd.DataFrame({'A': [1, 2, 3], 'B': [10, 20, 30]})
df2 = pd.DataFrame({'A': [1, 2, 4], 'C': [100, 200, 400]})

# 使用join()函数进行合并操作
result = df1.join(df2.set_index('A'), on='A', how='left')

print(result)

输出结果为:

   A   B      C
0  1  10  100.0
1  2  20  200.0
2  3  30    NaN

可以看到,根据列A进行合并后,合并结果为包含了列B和列C的新DataFrame。在合并过程中,行索引会保留在合并后的结果中。对于df1中没有对应的值,会用NaN填充。

除了按列进行合并外,我们还可以根据索引进行合并。

例如,假设需要根据两个DataFrame的索引进行合并,可以将on参数设置为None,并通过设置lsuffix和rsuffix来区分列名。

import pandas as pd

# 定义df1和df2
df1 = pd.DataFrame({'A': [1, 2, 3], 'B': [10, 20, 30]})
df2 = pd.DataFrame({'C': [100, 200, 400]}, index=[1, 2, 4])

# 使用join()函数进行合并操作
result = df1.join(df2, on=None, how='left', lsuffix='_df1', rsuffix='_df2')

print(result)

输出结果为:

   A   B   C
0  1  10 NaN
1  2  20 100
2  3  30 200

可以看到,根据索引进行合并后,合并结果为包含了df1和df2的所有列的新DataFrame。

总结一下,pandas中的DataFrame.join()函数可以根据指定的列或索引对多个DataFrame进行合并操作。它可以根据多个DataFrame中的共同列或索引进行连接,并返回合并后的结果。在合并过程中,可以指定连接方式和处理冲突的方式。在使用join()函数时,需要注意列名或索引的对齐问题,以及合并后的结果是否符合预期。