函数多个参数dataframe Python

时间:2016-03-05 17:25:33

标签: python pandas dataframe

我有一个包含大量日期的庞大数据框。我想将一个具有多个参数的函数应用于这些列的集合,以便在此数据帧中创建一个新的。

我的功能如下(它可以正常工作):

def func(*args):
count=0
for i in args:
    if i=="Cool":
        count+=1
return count

我在数据框中创建了一个新列,将此函数应用于一组列:

dates=["2000","2001","2002","2003","2004","2005","2006","2007","2009",]
df["new_Column"]=df.apply(lambda row : func(row[date] for date in dates), axis = 1)

但是,执行后我的new_Column始终等于零。问题来自最后一行肯定。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

这是因为您将生成器对象作为func的唯一参数传递。由于生成器对象不是'Cool',因此您获得0

其他人注意到你的问题并不完整。但据我所知,你有数据框看起来像这样

import pandas as pd
df = pd.DataFrame({'2000': ['Cool', 'yay', 'nope'], '2001': ['ugly', 'cool', 'nice']})

因此,您可以重写func

def func(lst):
    count=0
    for i in lst:
        if i=="Cool":
            count+=1
    return count

使用list构造函数

创建新列
df["new_Column"]=df.apply(lambda row : func(list(row[date] for date in ['2000', '2001'])), axis = 1)

并收到

    2000    2001    new_Column
0   Cool    ugly    1
1   yay     cool    0
2   nope    nice    0

如果是这种情况,那就是纯熊猫解决方案

df['new_Column2']=df[df.isin(['Cool'])].count(axis=1)
相关问题