遍历DataFrame行提取对应列字符遇重复值问题求助
解决方法
直接遍历DataFrame的每一行,而非单独遍历X列元素,就能保证每行的X、Y值对应处理,避免因X重复导致的多行匹配问题:
方法1:使用iterrows()
import pandas as pd # 构造目标DataFrame df = pd.DataFrame({ 'X': ['ABCDEFGH', 'ABCDEFGH'], 'Y': ['220105', '22H1 4'] }) for idx, row in df.iterrows(): set1 = row['X'] # Python是0索引,第6个字符对应索引5 set2 = row['Y'][5] # 取前5个字符并移除空格 set3 = row['Y'][0:5].replace(' ', '') print(f"set1={set1}") print(f"set2={set2}") print(f"set3={set3}")
运行结果完全符合预期:
set1=ABCDEFGH set2=5 set3=22010 set1=ABCDEFGH set2=4 set3=22H1
方法2:使用itertuples()(效率更高)
如果处理大数据量,推荐用itertuples(),它比iterrows()的运行效率更高:
for row in df.itertuples(index=False): set1 = row.X set2 = row.Y[5] set3 = row.Y[:5].replace(' ', '') print(f"set1={set1}") print(f"set2={set2}") print(f"set3={set3}")
原代码问题说明
你原代码中df.loc[df['X']==name, 'Y']会匹配所有X等于当前name的行,当X存在重复值时,就会返回多行结果,而非当前循环对应的单行数据。直接遍历每行则能精准处理每一组X、Y对应值。
内容的提问来源于stack exchange,提问作者beginner
相关产品推荐
相关产品推荐

