将定义的函数应用于 python 上的多行

Applying defined function to multiple rows on python

我正在尝试定义一个函数,以便它一次应用于多行。

这是我正在尝试做的事情。

我有 a 列,其中包含有关消费者按渠道设置的付款信息。我正在尝试将其转换为单独的二进制列(标志)。如果列 a = Source1,那么我想创建一个名为 Source1 的列,它将填充 1,否则为 0。对于列 a=Source2,则名为 Source2 的列将填充 1,否则为 0。依此类推。 下面是我的代码示例:

def payer(row1,row2,row3):
if file['a'] == 'Source1':
    return {row1:1, row2:0, row3:0}
elif file['a'] == 'Source2':
    return {row1:0, row2:1, row3:0}
elif file['a'] == 'Sourc3':
    return {row1:0, row2:0, row3:1}
else:
   return {row1:0, row2:0, row3:0}
file[['Source1','Source2','Source3']] =""
file[['Source1','Source2','Source3']]= file[['Source1','Source2','Source3']].apply(lambda a:(a), axis=0)

我是新手,但已经搜索了一段时间,但找不到任何解决方案。请帮忙!


import pandas as pd

def payer(name):
    if name == 'IB Plans':
        return 1, 2, 3
    elif name == 'Web Plans':
        return 1, 1, 3
    elif name == 'NC Payers':
        return 1, 1, 3
    else:
        return 2, 2, 2

file = pd.DataFrame({'a': ['IB Plans', 'Web Plans', 'NC Payers', 'Some other', 'NC Payers']})
file[['x', 'y', 'z']] = file.apply(lambda row: payer(row['a']), axis=1, result_type='expand')
print(file)

输出

            a  x  y  z
0    IB Plans  1  2  3
1   Web Plans  1  1  3
2   NC Payers  1  1  3
3  Some other  2  2  2
4   NC Payers  1  1  3