Pandas取单行后自动转置 如何回置结构并正确保存为CSV文件
问题根源
你在使用df.loc[行索引, :]筛选单行数据时,Pandas默认会将结果降维为Series对象,而非保持二维DataFrame结构。对Series执行transpose()操作不会改变其输出形态,因此你会得到竖排的展示效果,导出csv也不符合预期。
解决方案
有两种常用的修正方式:
- 方式1:筛选时直接保留DataFrame结构
给行索引参数包裹一层列表,告诉Pandas你需要返回二维结构,不需要降维。将你的df2定义代码修改为:
此时df2本身就是你需要的单行DataFrame,不需要再执行transpose操作,直接输出、保存即可。df2 = df1.loc[[df1.loc[:,"col2"].idxmax()],:] - 方式2:对已有Series转换为单行DataFrame
如果你已经拿到了Series格式的df2,可通过to_frame()先转为列向DataFrame,再转置得到正确结构:df3 = df2.to_frame().T
修正后完整代码
import pandas as pd d1 = { 'col1': [1, 2], 'col2': [4, 7], 'col3': [8, 5], } df1 = pd.DataFrame(data=d1) # 方式1 筛选时直接保留DataFrame结构 df3 = df1.loc[[df1.loc[:,"col2"].idxmax()],:] print("df3:") print(df3) df3.to_csv("df3.csv")
运行上述代码后,df3的打印结果与你期望的结构一致,导出的csv格式也符合要求。
内容的提问来源于stack exchange,提问作者ecjb
相关产品推荐
相关产品推荐

