我在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中执行这种类型的数据帧操作。
答案 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