Python读取CSV后如何拼接两列值到列表及修复循环仅输出单条问题
问题修复方案
1. 问题原因说明
- 循环只执行一次的原因:你在
range()的第三个参数(步长)设置为了len(df['district']),这个值等于DataFrame的总行数,所以循环只会在i=0时运行一次,自然只返回1条结果。 - 两列内容以二元组形式存在的原因:你往
l1里追加的是(df['unions'][i], df['district'][i]),逗号分隔的两个值默认会组成二元组,改成字符串拼接即可。
2. 修改后代码
import pandas as pd df = pd.read_csv("file path") l1 = [] l2 = [] # 直接遍历每一行,逻辑更清晰 for idx, row in df.iterrows(): # 两列用空格拼接成单个字符串 union_district = f"{row['unions']} {row['district']}" # 若需要保留外层括号的单元素元组格式,就写成l1.append((union_district,)) 注意末尾必须加逗号 l1.append(union_district) l2.append({"entities": [(0, len(row['unions']), row['subdistrict'])]}) TRAIN_DATA = list(zip(l1, l2)) print(TRAIN_DATA)
如果要沿用原来的range写法,把循环头改成for i in range(len(df)):即可,range默认步长为1,会遍历所有行。
3. 补充说明
如果你的期望输出里需要('Dhansagar Bagerhat')外层保留括号,注意Python语法里单元素元组必须加末尾逗号,也就是写为(union_district,),否则(union_district)本质就是单个字符串,不会带外层元组括号。
内容的提问来源于stack exchange,提问作者bellatrix
相关产品推荐
相关产品推荐

