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),然后将结果传递给数据帧构造函数。