【发布时间】:2017-09-23 00:17:57
【问题描述】:
我正在尝试遍历 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
我使用this approach 进行迭代,但它只提供了部分解决方案 - 在每次迭代中选择一行后,如何通过列名访问行元素? p>
这是我想要做的:
for row in df.iterrows():
print row.loc[0,'A']
print row.A
print row.index()
我的理解是该行是 Pandas series。但是我没有办法索引到系列中。
是否可以在遍历行的同时使用列名?
【问题讨论】:
-
row在你的例子中不是一个系列,它应该是一个元组。但是如果你这样做for idx, row in df.iterrows(),row['A']应该可以正常工作吗? -
这就是我所缺少的!谢谢。
-
大多数使用 pandas 的数值运算都可以向量化——这意味着它们比传统迭代要快得多。 OTOH,某些操作(例如字符串和正则表达式)本质上很难矢量化。在这种情况下,了解 如何 循环数据非常重要。有关何时以及如何循环数据的更多信息,请阅读For loops with Pandas - When should I care?。
标签: python pandas dataframe series