使用Python和Pandas处理CSV:解决列表转列回写行列颠倒问题
解决Pandas重组CSV时列行颠倒的问题
核心问题是你把处理后的列列表当成行数据传入DataFrame了,正确的做法是让每个列表对应一列,而非一行。以下是具体解决步骤和代码:
步骤1:读取原始CSV
先加载你的目标CSV文件:
import pandas as pd df = pd.read_csv('your_input_file.csv')
步骤2:处理单列数据(移除指定值+清理字符串)
假设你要移除的指定内容是'无效值',同时需要清理字符串多余空格,以示例中的两列为例:
# 处理Column A:移除指定值、删除空行、清理字符串后转列表 col_a_clean = df['Column A'].replace('无效值', pd.NA).dropna().str.strip().tolist() # 处理Column B:重复相同逻辑 col_b_clean = df['Column B'].replace('无效值', pd.NA).dropna().str.strip().tolist()
步骤3:正确构建目标DataFrame
这一步是关键,要将清理后的列表与列名一一对应,同时处理列表长度不一致的情况:
# 取最长列表的长度,对齐所有列 max_length = max(len(col_a_clean), len(col_b_clean)) # 给短列表补空字符串,保证列长度一致 col_a_clean += [''] * (max_length - len(col_a_clean)) col_b_clean += [''] * (max_length - len(col_b_clean)) # 用列名-列表的键值对构建DataFrame new_df = pd.DataFrame({ 'Column A': col_a_clean, 'Column B': col_b_clean })
步骤4:保存修复后的CSV
new_df.to_csv('your_output_file.csv', index=False)
执行后生成的CSV会符合你期望的结构:
| Column A | Column B |
|---|---|
| Todd | Amy |
| Ashley | Ashley |
| Greg |
内容的提问来源于stack exchange,提问作者Jonny
相关产品推荐
相关产品推荐

