加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – Pandas按行读取数据

发布时间:2020-12-20 11:08:10 所属栏目:Python 来源:网络整理
导读:通常,数据以列为变量的形式呈现,但是,例如,我在.txt文件中有类似的东西 Data1,1,2,3,4,5Data2,4 我可以使用pandas这样的方式构建数据框,就像我从中获得的一样 d = {"Data1":[1,5],"Data2": [3,2]}df = pd.DataFrame(data=d) 编辑: 最初我希望数据集的大小不
通常,数据以列为变量的形式呈现,但是,例如,我在.txt文件中有类似的东西

Data1,1,2,3,4,5
Data2,4

我可以使用pandas这样的方式构建数据框,就像我从中获得的一样

d = {"Data1":[1,5],"Data2": [3,2]}
df = pd.DataFrame(data=d)

编辑:
最初我希望数据集的大小不同,但是pandas不会允许它抛出ValueError

解决方法

阅读文件,转置数据框,munge一点……etvoilà.

伪造文件的设置:

>>> from io import StringIO
>>> file = StringIO('''Data1,5
...:Data2,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,4
...:Data2,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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读