You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PySpark中合并日期组合与城市对两个DataFrame?

解决方案

你需要实现的是两个DataFrame的笛卡尔积(全连接),让每个日期组合与所有城市对进行匹配,再处理日期格式即可得到目标结果。以下是两种可行方法:

方法一:通过临时键实现全连接(兼容所有Pandas版本)

先给两个DataFrame添加一个相同的临时列,再用merge完成全连接,最后清理临时列并处理日期:

import pandas as pd

# 模拟输入数据
df_date_combinations = pd.DataFrame({
    'fs_date': ['2022-06-01T00:00:00', '2022-06-01T00:00:00', '2022-06-01T00:00:00'],
    'ss_date': ['2022-06-02T00:00:00', '2022-06-03T00:00:00', '2022-06-04T00:00:00']
})

df_city_pairs = pd.DataFrame({
    'fs_origin': ['TLV', 'TLV', 'TLV'],
    'fs_destination': ['NYC', 'ROM', 'BER'],
    'ss_origin': ['NYC', 'ROM', 'BER'],
    'ss_destination': ['TLV', 'TLV', 'TLV']
})

# 添加临时键
df_date_combinations['temp_key'] = 1
df_city_pairs['temp_key'] = 1

# 全连接并删除临时键
merged_df = pd.merge(df_date_combinations, df_city_pairs, on='temp_key').drop('temp_key', axis=1)

# 格式化日期,去除时间部分
merged_df['fs_date'] = pd.to_datetime(merged_df['fs_date']).dt.strftime('%Y-%m-%d')
merged_df['ss_date'] = pd.to_datetime(merged_df['ss_date']).dt.strftime('%Y-%m-%d')

# 输出结果
print(merged_df.to_string(index=False))

方法二:使用Pandas内置的cross_join(Pandas 1.2.0+)

Pandas 1.2.0及以上版本支持直接用merge(how='cross')生成笛卡尔积,代码更简洁:

import pandas as pd

# 模拟输入数据(同上,可复用)
df_date_combinations = pd.DataFrame({
    'fs_date': ['2022-06-01T00:00:00', '2022-06-01T00:00:00', '2022-06-01T00:00:00'],
    'ss_date': ['2022-06-02T00:00:00', '2022-06-03T00:00:00', '2022-06-04T00:00:00']
})

df_city_pairs = pd.DataFrame({
    'fs_origin': ['TLV', 'TLV', 'TLV'],
    'fs_destination': ['NYC', 'ROM', 'BER'],
    'ss_origin': ['NYC', 'ROM', 'BER'],
    'ss_destination': ['TLV', 'TLV', 'TLV']
})

# 直接生成笛卡尔积
merged_df = df_date_combinations.merge(df_city_pairs, how='cross')

# 格式化日期
merged_df['fs_date'] = pd.to_datetime(merged_df['fs_date']).dt.date
merged_df['ss_date'] = pd.to_datetime(merged_df['ss_date']).dt.date

# 输出结果
print(merged_df.to_string(index=False))

两种方法最终都会生成你需要的DataFrame结构,日期格式也会匹配目标输出。

内容的提问来源于stack exchange,提问作者Daniel Avigdor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 14:54:08