我正在尝试迭代 Python Pandas 数据帧的行。在数据帧的每一行中,我尝试通过列名称引用行中的每个值。
这是我所拥有的:
import numpy as np
import pandas as pd
df = pd.DataFrame(np.random.rand(10,4),columns=list('ABCD'))
print df
A B C D
0 0.351741 0.186022 0.238705 0.081457
1 0.950817 0.665594 0.671151 0.730102
2 0.727996 0.442725 0.658816 0.003515
3 0.155604 0.567044 0.943466 0.666576
4 0.056922 0.751562 0.135624 0.597252
5 0.577770 0.995546 0.984923 0.123392
6 0.121061 0.490894 0.134702 0.358296
7 0.895856 0.617628 0.722529 0.794110
8 0.611006 0.328815 0.395859 0.507364
9 0.616169 0.527488 0.186614 0.278792
I used 这种方法 https://stackoverflow.com/a/16476974/4057186迭代,但这只是给了我解决方案的一部分 -在每次迭代中选择一行后,如何通过列名称访问行元素?
这是我正在尝试做的事情:
for row in df.iterrows():
print row.loc[0,'A']
print row.A
print row.index()
我的理解是该行是 Pandasseries http://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.html。但我无法索引该系列。
是否可以在迭代行的同时使用列名?
我也喜欢itertuples()
for row in df.itertuples():
print(row.A)
print(row.Index)
由于 row 是一个命名元组,如果您打算访问每一行上的值,则应该是MUCH faster
速度跑:
df = pd.DataFrame([x for x in range(1000*1000)], columns=['A'])
st=time.time()
for index, row in df.iterrows():
row.A
print(time.time()-st)
45.05799984931946
st=time.time()
for row in df.itertuples():
row.A
print(time.time() - st)
0.48400020599365234
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)