如何将各键对应值长度不一致的字典写入CSV文件
解决方案
方法1:使用pandas.Series自动对齐(最简方案)
pandas的Series构造时会自动根据最大长度补NaN,不需要手动计算长度,直接按如下代码实现:
import pandas as pd # 你的原始字典 raw_dict = { 'TimeStamp': [' 5571300\r\n', ' 6074300\r\n', ' 6581300\r\n', ' 7084300\r\n'], 'PRESS': [' 1020.44\r\n', ' 1020.42\r\n', ' 1020.48\r\n', ' 1020.46\r\n'], 'GYR_X': [' -70', ' 70', ' 0', ' 0'], 'GYR_Y': [' 630', ' 630', ' 630', ' 630'], 'GYR_Z': [' 210\r\n', ' 210\r\n', ' 210\r\n', ' 210\r\n'], 'MAG_X': [' -456', ' -450', ' -471', ' -457'], 'MAG_Y': [' -300', ' -307', ' -294', ' -295'], 'MAG_Z': [' 84\r\n', ' 84\r\n', ' 75\r\n', ' 75\r\n'], 'TEMP': [' +24.30\r\n', ' +24.30\r\n'], 'HUM': [' 71.78\r\n', ' 71.73\r\n'] } # 每个值转Series自动对齐,strip()用于清理多余的前后空格、换行符,不需要可以去掉 df = pd.DataFrame({k: pd.Series([v.strip() for v in vs]) for k, vs in raw_dict.items()}) # 写入CSV,na_rep参数指定缺失值显示内容,这里设置为空字符串 df.to_csv('output.csv', index=False, na_rep='')
长度不足的列末尾会自动填充空值,写入CSV后对应位置为空,不会影响其他列的对齐。
方法2:手动补全长度(可控性更高)
如果需要自定义缺失值填充逻辑,或者不想依赖Series的自动对齐,可以先计算所有值列表的最大长度,再手动把每个列表补到对应长度:
import pandas as pd import csv raw_dict = {} # 同上填写原始字典 # 计算所有值列表的最大长度 max_len = max(len(v) for v in raw_dict.values()) # 每个列表补到max_len长度,这里用空字符串填充,可替换为自定义占位符 processed_dict = { k: [x.strip() for x in vs] + ['']*(max_len - len(vs)) for k, vs in raw_dict.items() } # 方式1:用pandas写入 df = pd.DataFrame(processed_dict) df.to_csv('output.csv', index=False) # 方式2:不用pandas,直接用csv原生模块写入 with open('output.csv', 'w', newline='', encoding='utf-8') as f: writer = csv.writer(f) # 写入表头 writer.writerow(processed_dict.keys()) # 按行写入数据 writer.writerows(zip(*processed_dict.values()))
内容的提问来源于stack exchange,提问作者aditi1prakash
相关产品推荐
相关产品推荐

