Python 使用列和行作为参数遍历整个数据帧

Python 使用列和行作为参数遍历整个数据帧,python,pandas,python-2.7,dataframe,sklearn-pandas,Python,Pandas,Python 2.7,Dataframe,Sklearn Pandas,我有一个空的pandas数据框和一个函数值(x,y),它接受两个参数,pandas数据框中点的行号和列号。我想知道是否有一种更简单的方法可以使用这些参数(可能是使用df.apply)遍历整个空数据帧 我知道可以遍历每个单独的列并在单独的列上运行df.apply,但是可以不运行任何循环或类似的操作吗 本质上,我正在寻找这样的东西,我可以在整个数据帧上运行 df_copy.apply(lambda x: myfunction(x.value, x.column)) 0 1 2 3

我有一个空的pandas数据框和一个函数值(x,y),它接受两个参数,pandas数据框中点的行号和列号。我想知道是否有一种更简单的方法可以使用这些参数(可能是使用df.apply)遍历整个空数据帧

我知道可以遍历每个单独的列并在单独的列上运行df.apply,但是可以不运行任何循环或类似的操作吗

本质上,我正在寻找这样的东西,我可以在整个数据帧上运行

df_copy.apply(lambda x: myfunction(x.value, x.column))
    0  1  2  3  4
10  1  1  1  1  1
20  1  1  1  1  1
30  1  1  1  1  1
40  1  1  1  1  1
50  1  1  1  1  1
然而,x.column不存在,所以有另一种方法来做,或者我做错了什么


谢谢

是,使用序列的
名称
索引
属性:

df = pd.DataFrame(1, index = np.arange(10,51,10), columns = np.arange(5))
显示输入数据帧

df_copy.apply(lambda x: myfunction(x.value, x.column))
    0  1  2  3  4
10  1  1  1  1  1
20  1  1  1  1  1
30  1  1  1  1  1
40  1  1  1  1  1
50  1  1  1  1  1
让我们定义自定义函数并使用行作为列来进行计算

def f(x):
    #add row values to column values
    return x.name + x.index

df.apply(f)
输出:

     0   1   2   3   4
10  10  11  12  13  14
20  20  21  22  23  24
30  30  31  32  33  34
40  40  41  42  43  44
50  50  51  52  53  54
             A        B        C        D        E
Ted      Ted_A    Ted_B    Ted_C    Ted_D    Ted_E
Bill    Bill_A   Bill_B   Bill_C   Bill_D   Bill_E
Ralph  Ralph_A  Ralph_B  Ralph_C  Ralph_D  Ralph_E
John    John_A   John_B   John_C   John_D   John_E
Tim      Tim_A    Tim_B    Tim_C    Tim_D    Tim_E
注意:
apply
将数据帧的每一列(这是一个pd系列)传递到函数f中。每个系列都有一个属性
name
,它是列标题,还有一个属性
index
,它是数据帧行索引。所以,函数f为数据帧的每一列返回一个计算出的pd.Series,并作为数据帧放回一起

在评论中回答问题,让我们使用字符串:

df = pd.DataFrame(1, index=['Ted','Bill','Ralph','John','Tim'], columns=['A','B','C','D','E'])

def f(x):
    #Concatenate row values with column values
    return x.index + '_' + x.name

df.apply(f)
或者使用lambda函数

df.apply(lambda x: x.index + '_' + x.name)
输出:

     0   1   2   3   4
10  10  11  12  13  14
20  20  21  22  23  24
30  30  31  32  33  34
40  40  41  42  43  44
50  50  51  52  53  54
             A        B        C        D        E
Ted      Ted_A    Ted_B    Ted_C    Ted_D    Ted_E
Bill    Bill_A   Bill_B   Bill_C   Bill_D   Bill_E
Ralph  Ralph_A  Ralph_B  Ralph_C  Ralph_D  Ralph_E
John    John_A   John_B   John_C   John_D   John_E
Tim      Tim_A    Tim_B    Tim_C    Tim_D    Tim_E

你试过什么?请检查并创建@user3483203,这是否提供了更多的说明?因此,这是可行的,但是,x.name和x.index是RangeIndex对象-是否有任何方法将这些值转换为整数是的,我在解决方案中附上了一个示例。