PySpark如何从DataFrame中动态选择指定列?
解决方案
要实现从第一个DataFrame中筛选出列名存在于第二个DataFrame中的列,按以下步骤操作即可:
提取目标列名列表
先从存储列名的第二个DataFrame中,把columnname列的内容转换成Python列表,这就是我们要保留的列名集合。筛选目标列
用这个列表直接索引第一个DataFrame,就能得到只包含指定列的新DataFrame。如果担心第二个DataFrame里有第一个DataFrame不存在的列名,可以先做个过滤,避免触发KeyError。
代码示例
import pandas as pd # 模拟第一个包含多列的DataFrame df_main = pd.DataFrame({ 't_orno': [1, 2, 3, 4], 't_pono': ['PO001', 'PO002', 'PO003', 'PO004'], 't_sqnb': [1, 2, 3, 4], 't_pric': [15.99, 29.99, 9.99, 49.99] }) # 模拟存储目标列名的第二个DataFrame df_columns = pd.DataFrame({ 'columnname': ['t_pono', 't_pric'] }) # 提取目标列名列表,同时过滤掉主DataFrame中不存在的列(可选但推荐) target_cols = [col for col in df_columns['columnname'].tolist() if col in df_main.columns] # 筛选得到结果DataFrame result_df = df_main[target_cols] # 查看结果 print(result_df)
运行后会得到只包含t_pono和t_pric列的DataFrame,完全匹配需求。
内容的提问来源于stack exchange,提问作者sweenal
相关产品推荐
相关产品推荐

