首页 > 解决方案 > 将数据框列名复制到新行

问题描述

我正在读取文件并转换为数据框。由于文件没有组织,我在读取为 csv 时将标题保持为 0。默认情况下,如果 header = 0 pandas 自动分配 df 的第一行

   "Name"=>"Mark"  "Phone"=>"1234567"  "Id"=>"E1234"    "Admin"=>false
0  "Name"=>"Anto"  "Phone"=>"7654321"   "Dept"=>"HR"   "Id"=>"E4321"   "case"=>nil

我的最终目标是将数据帧转换为可读格式

Name   Phone    Id   Dept   Admin  case 
Mark   1234567  E1234        false
Anto   7654321  E4321   HR           nil

由于第一行已经移至列,我无法对第一行进行操作。是否可以复制列名并将其粘贴为同一数据框的第一行?

注意:由于文件没有组织,因此每行中的数据都不同。因此,我避免使用 header = NONE。

标签: python-3.xpandasdataframe

解决方案


一个想法是创建字典列表并传递给DataFrame构造函数:

out = []
with open("Sample.csv") as f:
    for line in f:
        d = dict([[y.strip('"') for y in x.split('=>')] for x in line.strip().split(',')])
        out.append(d)

df = pd.DataFrame(out)
print (df)
   Name    Phone     Id  Admin Dept case
0  Mark  1234567  E1234  false  NaN  NaN
1  Anto  7654321  E4321    NaN   HR  nil

文件:

"Name"=>"Mark","Phone"=>"1234567","Id"=>"E1234","Admin"=>false
"Name"=>"Anto","Phone"=>"7654321","Dept"=>"HR","Id"=>"E4321","case"=>nil

推荐阅读