Pyspark连接两个dataframe,横向连接,(可能是中文互联网上首个正确方法)

简单的问题,横向连接两个df,如下图所示。

pyspark中没有类似padas中的pd.concat([df1,df2],axis='columns')用以连接两个df,中文搜索半天都是些文不对题的答案,还是得科学搜索,墙外出真知。特此记录解决办法:

from pyspark.sql.functions import monotonically_increasing_id as mi
id=mi()
df1 = df1.withColumn("match_id", id)
cont_data = cont_data.withColumn("match_id", id)
cont_data = cont_data.join(df1,df1.match_id==cont_data.match_id, 'inner').drop(df1.match_id)

pyspark只能用join方法横向连接,因此需要构造一个临时的相同列使用。构造完之后丢弃即可。

在Python的pandas库中,可以使用`concat()`函数或者`merge()`函数来实现两个DataFrame横向连接。 1. 使用`concat()`函数: `concat()`函数通常用于将多个对象按行或列进行拼接。对于横向连接,可以设置`axis=1`参数来指定连接方向。这种方法简单直接,相当于SQL中的全连接(FULL JOIN),即使某些行在某些列中没有对应的数据,也会在结果中显示为NaN。 示例代码如下: ```python import pandas as pd # 假设有两个DataFrame df1和df2 df1 = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]}) df2 = pd.DataFrame({'C': [7, 8, 9], 'D': [10, 11, 12]}) # 使用concat函数横向连接df1和df2 result = pd.concat([df1, df2], axis=1) ``` 2. 使用`merge()`函数: `merge()`函数用于根据一个或多个键将不同的DataFrame对象的行连接起来。默认情况下,`merge()`函数执行的是内连接(INNER JOIN),它只连接两个DataFrame中键相匹配的行。但通过设置`how='outer'`参数,可以实现全连接,即横向连接。 示例代码如下: ```python import pandas as pd # 假设有两个DataFrame df1和df2 df1 = pd.DataFrame({'key': ['A', 'B', 'C'], 'value1': [1, 2, 3]}) df2 = pd.DataFrame({'key': ['A', 'B', 'D'], 'value2': [4, 5, 6]}) # 使用merge函数横向连接df1和df2,指定键和连接方式 result = pd.merge(df1, df2, on='key', how='outer') ``` 在上面的例子中,我们使用了`on`参数指定了连接的键,`how='outer'`参数使得合并方式为全连接,即使某些行在另一个DataFrame中没有对应的键,这些行也会显示出来,并且没有对应键的列会用NaN填充。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值