我想迭代pandas DataFrame中的每一行,并对每行中的元素做一些事情。
现在我有
for row in df.iterrows():
if row['col'] > 1.5:
doSomething
但它告诉我,'元组索引必须是整数,而不是str' 。如何在特定行中访问我想要的列?
答案 0 :(得分:3)
iterrows
产生(索引,系列)对。因此,请使用:
for index, row in df.iterrows():
if row['col'] > 1.5:
doSomething
但请注意a DataFrame is a primarily column-based data structure,所以 如果你可以围绕列构建代码,那么你将获得更好的性能 操作,而不是按行操作。
答案 1 :(得分:2)
最简单的解决方案可能是使用 APPLYMAP 或 APPLY 功能,将功能应用于整个数据集中的每个数据值。
您可以通过以下几种方式执行此操作:
df.applymap(someFunction)
或
df[["YourColumns"]].apply(someFunction)
链接如下:
答案 2 :(得分:0)
您可以将apply
函数与选项axis=1
一起使用。例如:
def my_function(row):
if row['col'] > 1.5:
doSomething()
else:
doSomethingElse()
my_df.apply(my_function, axis=1)