Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将可变长度字符串数组转换为数据帧_Python_Numpy_Dataframe - Fatal编程技术网

Python 将可变长度字符串数组转换为数据帧

Python 将可变长度字符串数组转换为数据帧,python,numpy,dataframe,Python,Numpy,Dataframe,我在每一行中都有一个长度可变的字符串数组,其中列标签在字符串内容中指示。但是,列的大小是可变的,并且可能很大。如何将此格式转换为数据帧? 比如说 输入: np.array([['Hour: 1', 'Name: EVENT_1', 'Column1: A'], ['Hour: 2', 'Name: EVENT_2', 'Column1: B','Column2: BCX'], ['Hour: 2', 'Name: EVENT_2', 'Column1: C','Colum

我在每一行中都有一个长度可变的字符串数组,其中列标签在字符串内容中指示。但是,列的大小是可变的,并且可能很大。如何将此格式转换为数据帧? 比如说

输入:

np.array([['Hour: 1', 'Name: EVENT_1', 'Column1: A'],
      ['Hour: 2', 'Name: EVENT_2', 'Column1: B','Column2: BCX'],
      ['Hour: 2', 'Name: EVENT_2', 'Column1: C','Column3: BCY','Column4: BCE'],
      ['Hour: 4', 'Name: EVENT_4','Column1: D',  'Column3: BCZ'],
      ['Hour: 5','Name: EVENT_5','Column2: BC', 'Column99: BCR' ,'Column100: BCA']
     ])
预期产出:

Hour |  Name     |Column1|Column2|Column3|Column4...Column99|Column100
1    |  EVENT_1  |  AA   | BCX   |       |       ...        | 
2    |  EVENT_2  |  BQ   |       |       | BCE    ...       | 
3    |  EVENT_3  |  CW   |       | BCY   |       ...        | 
4    |  EVENT_4  |  DF   |       | BCZ   |       ...        |   
5    |  EVENT_5  |       | BC    |       |       ...    BCR |   BCA

欢迎来到Stack Overflow

正如@jirassimok提到的,您需要迭代来构造字典。下面是一段代码,可以帮助您:

#收集所有行的数组
新的_数组=[]
#每行
对于行中的r:
#数组以收集新行
新_行={}
#对于每个“列:值”对,将其转换为字典
对于r中的c_v:
#将所有值添加到其列中
新行[c_v.split(':')[0]=c_v.split(':')[1]
新_数组+=[新_行]
pd.数据帧(新的_阵列)
如果确实需要节省空间,可以使用字典和列表理解将上面的内容转换为一行

pd.DataFrame([{x.split(':')[0]:x.split(':')[1]用于r中的x}用于r中的行])

我建议在数据上循环并将列名与其数据分离(创建
dict
s),然后将结果传递给数据帧构造函数。