python 3.5.2
numpy 1.11.1
我在从分割文本文件创建的dataframe
创建2-dimensional list
时遇到问题。这是文本文件的示例:
#freq [MHz] #flags #total %flagged\n947.6 1451736.0 1451736.0
1.0\n947.615625 1451736.0 1451736.0 1.0\n947.63125 1451736.0 1451736.0
1.0\n947.646875 1451736.0 1451736.0 1.0\n947.6625 1451736.0 1451736.0
1.0\n947.678125 1451736.0 1451736.0 1.0\n947.69375 1451736.0 1451736.0
1.0\n947.709375 1451736.0 1451736.0 1.0\n947.725 1451736.0 1451736.0
1.0\n947.740625 1451736.0 1451736.0 1.0\n947.75625 1451736.0 1451736.0
1.0\n947.771875 1451736.0 1451736.0 1.0\n947.7875 1451736.0 1451736.0
1.0\n947.803125 1451736.0 1451736.0 1.0\n947.8 ....
因此,这些行以\n
分隔,每列由space
分隔。我解析了这个:
obs_array = []
obs_1 = obs_txts[obs].split('\n')
for i in range(0,len(obs_1)):
obs_array.append(obs_1[i].split(' '))
所以我得到obs_array
作为二维列表。我摆脱了first row
(只是列名,我在工作dataframe
后重命名)和last row
,这只是一个空的''
。所以,我现在有一个包含30720 rows
和4 columns
的二维列表。我可以把它变成一个数组:
obs_array = np.array(obs_array)
但此数组的形状返回(30720,)。我检查了每一行的长度,每一行返回4并试图强制形状为(30720,4)返回size error
。我肯定知道应该有30720行。将其放入dataframe
obs_df = pd.DataFrame(obsarray)
返回
0
0 [947.6, 1451736.0, 1451736.0, 1.0]
1 [947.615625, 1451736.0, 1451736.0, 1.0]
2 [947.63125, 1451736.0, 1451736.0, 1.0]
3 [947.646875, 1451736.0, 1451736.0, 1.0]
4 [947.6625, 1451736.0, 1451736.0, 1.0]
换句话说,30720x1 dimensioned dataframe
每行有一个条目:该行的列表。
这里发生了什么?为什么我不能用python来解释形状为(30720,4)
的obs_array?谢谢你的帮助。
答案 0 :(得分:0)
因此,在obs_array = np.array(obs_array)
之后,您可以运行pd.DataFrame(obs_array.tolist())
,它将为您提供以下数据框:
0 1 2 3 4 5
0 # freq [MHz] #flags #total %flagged
1 947.6 1451736.0 1451736.0 1.0 None None
2 947.615625 1451736.0 1451736.0 1.0 None None
3 947.63125 1451736.0 1451736.0 1.0 None None
4 947.646875 1451736.0 1451736.0 1.0 None None
5 947.6625 1451736.0 1451736.0 1.0 None None
6 947.678125 1451736.0 1451736.0 1.0 None None
7 947.69375 1451736.0 1451736.0 1.0 None None
8 947.709375 1451736.0 1451736.0 1.0 None None
9 947.725 1451736.0 1451736.0 1.0 None None
10 947.740625 1451736.0 1451736.0 1.0 None None
11 947.75625 1451736.0 1451736.0 1.0 None None
12 947.771875 1451736.0 1451736.0 1.0 None None
13 947.7875 1451736.0 1451736.0 1.0 None None
14 947.803125 1451736.0 1451736.0 1.0 None None
希望这有帮助,如果您有任何问题,请与我联系。