我正在访问pandas数据帧行,因此我得到了pandas系列。我的解析例程接受命名元组。是否可以将pandas序列转换为命名元组?
发布于 2018-02-14 07:11:58
无论您在做什么,您都可以只使用df.itertuples:
In [5]: df
Out[5]:
c0 c1 c2 c3 c4 c5 c6 c7 c8 c9
0 8.0 2.0 1.0 4.0 4.0 3.0 1.0 19.0 5.0 9.0
1 7.0 7.0 0.0 4.0 14.0 7.0 9.0 0.0 0.0 9.0
2 19.0 10.0 6.0 13.0 12.0 11.0 8.0 4.0 11.0 13.0
3 14.0 0.0 16.0 19.0 3.0 8.0 8.0 9.0 17.0 13.0
4 18.0 16.0 10.0 8.0 15.0 9.0 18.0 9.0 5.0 10.0
5 15.0 7.0 16.0 3.0 18.0 14.0 3.0 6.0 0.0 9.0
6 14.0 14.0 18.0 4.0 4.0 0.0 8.0 15.0 8.0 12.0
7 19.0 16.0 15.0 16.0 1.0 12.0 14.0 1.0 10.0 15.0
8 8.0 17.0 10.0 18.0 7.0 13.0 13.0 12.0 6.0 11.0
9 15.0 13.0 13.0 17.0 2.0 0.0 6.0 10.0 5.0 5.0
In [6]: rows = df.itertuples(name='Row')
In [7]: r0 = next(rows)
In [8]: r0
Out[8]: Row(Index=0, c0=8.0, c1=2.0, c2=1.0, c3=4.0, c4=4.0, c5=3.0, c6=1.0, c7=19.0, c8=5.0, c9=9.0)
In [9]: r0.c0
Out[9]: 8.0否则,你将不得不自己做,就像这样:
In [10]: from collections import namedtuple
In [11]: df.columns
Out[11]: Index(['c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'c6', 'c7', 'c8', 'c9'], dtype='object')
In [12]: Row = namedtuple('Row', df.columns)
In [13]: df.iloc[0]
Out[13]:
c0 8.0
c1 2.0
c2 1.0
c3 4.0
c4 4.0
c5 3.0
c6 1.0
c7 19.0
c8 5.0
c9 9.0
Name: 0, dtype: float64
In [14]: Row(*df.iloc[0])
Out[14]: Row(c0=8.0, c1=2.0, c2=1.0, c3=4.0, c4=4.0, c5=3.0, c6=1.0, c7=19.0, c8=5.0, c9=9.0)注意,此版本没有index字段...
https://stackoverflow.com/questions/48777154
复制相似问题