如何在Python中格式化具有多列但只有一行的数据框?

时间:2018-06-27 10:07:30

标签: python pandas dataframe

我在Python中有一个数据框,其中包含1行但100列。看起来像这样:

_id  d.0.id  d.0.name  d.0.dep.id  d.0.dep.name  d.0.dep.1.id  d.0.dep.1.name .... 

 A     B        C          D            E            F            G

我需要通过以下方式将数据帧转换为csv文件:

_id  d.0.id  d.0.name  d.dep.id   d.dep.name

 A     B        C          D           E
 A     B        C          F           G
 .     .        .          .           .
 .     .        .          .           .

新的csv文件应具有5列。前三列应在整个文件中包含相同的条目。每行只有最后两列发生更改。请告诉我如何使用Pandas在Python中执行这种类型的数据帧操作。

1 个答案:

答案 0 :(得分:1)

使用以下5列获取新的数据框:

df1 = df.iloc[:,0:5]
or
df1=df[[_id,d.0.id,d.0.name,d.dep.id,d.dep.name]]

将新数据框另存为csv:

df1.to_csv('./file_path')

扩展问题的解决方案

将单行转换为ndarray

import pandas as pd
df = pd.read_csv('df_info.txt', sep=",", header=0)
vallist=df.as_matrix()[0]

输出:

array(['NBA', 'Mens', 'Sports', 'LAL', 'Lakers', 'BOS', 'Celtics', 'SAS',
       'Spurs', 'OKC', 'Thunder'], dtype=object)

创建一个存储值的Dict

dict={}
n=4
varlist1=[]
for i in range(len(vallist)):
    if(n<=9):
        dict[i]={}
        print(vallist[n],vallist[n+1])
        dict[i]['col1']=vallist[0]
        dict[i]['col2']=vallist[1]
        dict[i]['col3']=vallist[2]
        dict[i]['col4']=vallist[n]
        dict[i]['col5']=vallist[n+1]
        n+=2

将字典导入数据框

df2=pd.DataFrame.from_dict(dict)
df2.transpose()

最终结果:

   col1 col2    col3    col4    col5
0   NBA Mens    Sports  Lakers  BOS
1   NBA Mens    Sports  Celtics SAS
2   NBA Mens    Sports  Spurs   OKC