Pandas 循环以从一行创建数据帧
我有以下代码:Pandas 循环以从一行创建数据帧,pandas,python-2.7,dataframe,hdf5,Pandas,Python 2.7,Dataframe,Hdf5,我有以下代码: # 2.1. Selected datasets for i in range(len(self.selected_datasets)): self.outputfile.write('\n') self.outputfile.write('Dataset : ' + self.selected_datasets[i]) #Print the pass ex : index1/index2/index3/...
# 2.1. Selected datasets
for i in range(len(self.selected_datasets)):
self.outputfile.write('\n')
self.outputfile.write('Dataset : ' + self.selected_datasets[i]) #Print the pass ex : index1/index2/index3/...
oDataset = self.ohdf5.getDataset(self.selected_datasets[i]) # oDataset correspond to curselection dataset
# 2.2. Datatypes in dataset
self.datatype_listbox.select_set(0, 'end')
self.datatype_listbox.event_generate("<<ListboxSelect>>")
datas = self.datatype_listbox.curselection()
self.outputfile.write('\n')
for col in datas: # For datatype in selected dataset
c = Column(oDataset.h5data,oDataset.columns[col]) # oDataset.columns[col] dtype name ex : DATATYPE1
self.c_list.append(c)
for r in range(len(c.col)):
self.b_list.append(c.col[r])
# self.outputfile.write('\n')
self.outputfile.write(oDataset.columns[col] + ' : ') # Write Dtype name
for i in range(len(self.b_list)):
# self.outputfile.write('\n')
self.outputfile.write(str(self.b_list[i])) # Write Dtype 2,3,4
我正在寻找一种蟒蛇式的方法来获得:
Dataset : /INDEX/NASTRAN/RESULT/ELEMENTAL/ELEMENT_FORCE/BEAM
DATATYPE1 DATATYPE2 DATATYPE3
2 2 .
3 3 .
4 4 .
. .
. .
我知道这很容易,但我是一个Python初学者,我没有成功地将我读过的不同主题合并在一起。如果答案是指一份文件,那就足够了。我假设您是从文件中读取的。我用它作为我代码的字符串
import pandas as pd
import numpy as np
file = '''Dataset : /INDEX/NASTRAN/RESULT/ELEMENTAL/ELEMENT_FORCE/BEAM
DATATYPE1 : 234DATATYPE2 : 2340781415628DATATYPE3 : 2340781415628781478147814'''
file = file.split('\n')[1:]
file = ' '.join(file)
datatypes = file.split('DATATYPE')
datatypes = [x for x in datatypes if x != '']
temp_dict = {}
for elem in datatypes:
elem = elem.split(' : ')
temp_dict['DATATYPE' + str(elem[0])] = []
for i in elem[1]:
temp_dict.setdefault('DATATYPE' + str(elem[0]), []).append(i)
df = pd.DataFrame.from_dict(temp_dict, orient='index').fillna(np.nan).transpose()
输出:
DATATYPE1 DATATYPE2 DATATYPE3
0 2 2 2
1 3 3 3
2 4 4 4
3 NaN 0 0
4 NaN 7 7
5 NaN 8 8
6 NaN 1 1
7 NaN 4 4
8 NaN 1 1
9 NaN 5 5
10 NaN 6 6
11 NaN 2 2
12 NaN 8 8
13 NaN NaN 7
14 NaN NaN 8
15 NaN NaN 1
16 NaN NaN 4
17 NaN NaN 7
18 NaN NaN 8
19 NaN NaN 1
20 NaN NaN 4
21 NaN NaN 7
22 NaN NaN 8
23 NaN NaN 1
24 NaN NaN 4
如果模板相同,您可以这样更改它
file=file.split('\n')[1://code>获取除第一行以外的所有行,然后再次将其转换为字符串,以便脚本file=''.join(file)
。我试过了,效果很好。我更新了代码。
DATATYPE1 DATATYPE2 DATATYPE3
0 2 2 2
1 3 3 3
2 4 4 4
3 NaN 0 0
4 NaN 7 7
5 NaN 8 8
6 NaN 1 1
7 NaN 4 4
8 NaN 1 1
9 NaN 5 5
10 NaN 6 6
11 NaN 2 2
12 NaN 8 8
13 NaN NaN 7
14 NaN NaN 8
15 NaN NaN 1
16 NaN NaN 4
17 NaN NaN 7
18 NaN NaN 8
19 NaN NaN 1
20 NaN NaN 4
21 NaN NaN 7
22 NaN NaN 8
23 NaN NaN 1
24 NaN NaN 4