pandas DataFrame中每一行的操作

时间:2014-10-07 19:46:09

标签: python pandas dataframe

我想迭代pandas DataFrame中的每一行,并对每行中的元素做一些事情。

现在我有

for row in df.iterrows(): 
    if row['col'] > 1.5:
        doSomething

但它告诉我,'元组索引必须是整数,而不是str' 。如何在特定行中访问我想要的列?

3 个答案:

答案 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)

链接如下:

ApplyMap Docs

Apply Docs

答案 2 :(得分:0)

您可以将apply函数与选项axis=1一起使用。例如:

def my_function(row):
    if row['col'] > 1.5:
        doSomething()
    else:
        doSomethingElse()

my_df.apply(my_function, axis=1)

source