如何在Python中格式化包含多个列但只有一行的数据帧?

2024-06-06 16:45:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我在Python中有一个dataframe,它由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文件:

^{pr2}$

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


Tags: 文件csv数据nameid类型dataframepandas
1条回答
网友
1楼 · 发布于 2024-06-06 16:45:49

获取包含以下5列的新数据帧:

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

将新数据帧另存为csv:

^{pr2}$

扩展问题的解决方案

将单行转换为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

将dict导入Dataframe

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

相关问题 更多 >