创建Pandas DataFrame列表失败,请求排查语法错误并修正
列表推导式创建DataFrame列表的语法错误排查
问题代码
尝试用列表推导式生成Pandas DataFrame列表的代码:
import pandas as pd [pd.concat([pd.DataFrame({'X' : [1,2], 'Y' : ['A', 'B']}), pd.DataFrame({'X' : [1,2], 'Y' : ['A', 'B']})], axis = 0) if (i == 2) \ pd.concat([pd.DataFrame({'X' : [1,2], 'Y' : ['D', 'E']}), pd.DataFrame({'X' : [1,2], 'Y' : ['D', 'E']})], axis = 0) for i in range(1, 4)]
报错信息
运行时触发语法错误:
>>> [pd.concat([pd.DataFrame({'X' : [1,2], 'Y' : ['A', 'B']}), pd.DataFrame({'X' : [1,2], 'Y' : ['A', 'B']})], axis = 0) if (i == 2) \ ... pd.concat([pd.DataFrame({'X' : [1,2], 'Y' : ['D', 'E']}), pd.DataFrame({'X' : [1,2], 'Y' : ['D', 'E']})], axis = 0) for i in range(1, 4)] File "<stdin>", line 2 [pd.concat([pd.DataFrame({'X' : [1,2], 'Y' : ['A', 'B']}), pd.DataFrame({'X' : [1,2], 'Y' : ['A', 'B']})], axis = 0) if (i == 2) \ pd.concat([pd.DataFrame({'X' : [1,2], 'Y' : ['D', 'E']}), pd.DataFrame({'X' : [1,2], 'Y' : ['D', 'E']})], axis = 0) for i in range(1, 4)] ^ SyntaxError: invalid syntax
错误原因
列表推导式中使用的三元表达式语法不完整,Python的三元表达式必须遵循表达式1 if 条件 else 表达式2的结构,代码中缺少了else关键字,导致解析器无法识别正确的逻辑分支。
修正方案
- 补充三元表达式中的
else关键字,修复语法结构; - 提取重复创建的DataFrame模板,减少代码冗余,提升可读性。
修正后的代码:
import pandas as pd # 定义重复使用的DataFrame模板 df_ab = pd.DataFrame({'X': [1, 2], 'Y': ['A', 'B']}) df_de = pd.DataFrame({'X': [1, 2], 'Y': ['D', 'E']}) # 修正后的列表推导式 df_list = [ pd.concat([df_ab, df_ab], axis=0) if i == 2 else pd.concat([df_de, df_de], axis=0) for i in range(1, 4) ] # 可选:打印验证结果 for idx, df in enumerate(df_list): print(f"第{idx+1}个DataFrame:\n{df}\n")
内容的提问来源于stack exchange,提问作者Bogaso
相关产品推荐
相关产品推荐

