Python pandas字典转CSV后转置索引异常,请求解决方法
问题原因分析
你手动写入CSV的方式导致文件结构不符合pandas的默认解析规则:
- 生成的CSV每一行是
键,值的格式,第一行bedrooms,2.0会被pd.read_csv当作表头行,即bedrooms成为唯一列名,后续所有行都被当作该列的字符串数据(比如bathrooms,3.0是一个单元格内容)。 - 转置后,
bedrooms变成索引名,原第一行的2.0成为唯一数据列,其他行的内容被错误解析,自然在info()中看不到bedrooms作为数据项的存在。
正确解决方案
直接用pandas内置方法处理字典与CSV的转换,避免手动写入的错误:
方法1:将字典转为单行数据保存(最常用)
适合把字典作为一条记录存储,读取后直接得到列名为字典键、值为对应数据的DataFrame:
import pandas as pd data_new = {'bedrooms': 2.0, 'bathrooms': 3.0, 'sqft_living': 1200, 'sqft_lot': 5800, 'floors': 2.0, 'waterfront': 1, 'view': 1, 'condition': 2, 'sqft_above': 1200, 'sqft_basement': 20, 'yr_built': 1925, 'yr_renovated': 2003, 'city': "Shoreline"} # 把字典包装成列表,转为单行DataFrame df = pd.DataFrame([data_new]) # 保存CSV,不写入索引列 df.to_csv('test.csv', index=False) # 读取验证 df1 = pd.read_csv('test.csv') print(df1) # 查看数据信息,所有字段都会正常显示 df1.info()
方法2:将字典键作为行索引保存
如果需要保留键-值的行式结构,读取后转置也能正常显示所有数据:
import pandas as pd # 从字典生成以键为索引、值为列的DataFrame df = pd.DataFrame.from_dict(data_new, orient='index', columns=['value']) # 保存CSV,保留索引列(即字典的键) df.to_csv('test.csv') # 读取时指定第一列为索引 df1 = pd.read_csv('test.csv', index_col=0) # 转置后得到单行数据,所有字段完整 tdf1 = df1.T print(tdf1) tdf1.info()
内容的提问来源于stack exchange,提问作者Aravind Viswanathan
相关产品推荐
相关产品推荐

