通常,数据以列为变量的形式呈现,但是,例如,我在.txt文件中有类似的东西
Data1,1,2,3,4,5
Data2,3,1,4
我可以使用pandas这样的方式构建数据框,就像我从中获得的一样
d = {"Data1":[1,2,3,4,5], "Data2": [3,1,4,1,2]}
df = pd.DataFrame(data=d)
编辑:
最初我希望数据集的大小不同,但是pandas不会允许它抛出ValueError
最佳答案 阅读文件,转置数据框,munge一点……etvoilà.
伪造文件的设置:
>>> from io import StringIO
>>> file = StringIO('''Data1,1,2,3,4,5
...:Data2,3,1,4''')
创建数据框:
>>> df = pd.read_csv(file, header=None).T
>>> df = df.rename(columns=df.loc[0]).drop(0, axis=0)
>>>
>>> df
>>>
Data1 Data2
1 1 3
2 2 1
3 3 4
4 4 NaN
5 5 NaN
然而,Peter Leimbigler在this回答中做得更优雅一点!
正如ALollz指出的那样,这些解决方案仅在文件中没有包含比第一行更多字段的行时才有效.
这是我尝试更普遍适用的解决方案:
>>> file = StringIO('''Data1,3,1,4
...:Data2,1,2,3,4,5
...:Data3,7,8''')
>>> df = pd.concat([pd.Series(line.split(',')) for line in file], axis=1)
>>> df.rename(columns=df.loc[0]).drop(0, axis=0).astype(float)
>>>
Data1 Data2 Data3
1 3.0 1.0 7.0
2 1.0 2.0 8.0
3 4.0 3.0 NaN
4 NaN 4.0 NaN
5 NaN 5.0 NaN