我有一个来自pandas的DataFrame
。
import pandas as pd
inp = [{'c1':10, 'c2':100}, {'c1':11,'c2':110}, {'c1':12,'c2':120}]
df = pd.DataFrame(inp)
print df
输出。
c1 c2
0 10 100
1 11 110
2 12 120
现在我想在这个框架的行上进行迭代。对于每一行,我希望能够通过列的名称来访问其元素(单元格中的值)。比如说。
for row in df.rows:
print row['c1'], row['c2']
在pandas中可以这样做吗?
我找到了这个类似问题。但它并没有给出我需要的答案。例如,那里建议使用。
for date, row in df.T.iteritems():
或
for row in df.iterrows():
但我不明白什么是 "row "对象,以及我怎样才能使用它。
DataFrame.iterrows是一个生成器,可以同时产生索引和行。
import pandas as pd
import numpy as np
df = pd.DataFrame([{'c1':10, 'c2':100}, {'c1':11,'c2':110}, {'c1':12,'c2':120}])
<! - ->
for index, row in df.iterrows():
print(row['c1'], row['c2'])
Output:
10 100
11 110
12 120
你也可以使用df.apply()
来迭代行和访问一个函数的多列。
def valuation_formula(x, y):
return x * y * 0.5
df['price'] = df.apply(lambda row: valuation_formula(row['x'], row['y']), axis=1)