pandas - 在熊猫中循环以从一行创建一个数据框
问题描述
我有以下代码:
# 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 : 234DATATYPE2 : 2340781415628DATATYPE3 : 2340781415628781478147814
我正在寻找一种pythonic方式来获得:
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
推荐阅读
- jquery - 可内容编辑的 DIV 中带有换行符的 JQuery 字符计数器
- android - Android Firebase - 神秘的对象键
- c# - 方法没有重载匹配委托'EventHandler'
- python-3.x - 当我尝试将 BGR 转换为 HSV 并得到错误 cvtColor 时出了什么问题?
- youtube - YouTube 和 Netflix 如何将内容推送到 Roku?
- node.js - Mongoose - 如何在 Mongoose 的填充字段数组中选择特定对象?
- chromecast - 创建自定义 CAF 接收器
- assembly - 为什么旋转槽的第一个和第二个图像永远不能相同?
- javascript - 如何从输入文件设置背景图像?
- ruby-on-rails - 通过 lang 获取 TMDB API