Pandas应用具有多个** Kwarg参数的函数

时间:2015-11-18 20:35:54

标签: python pandas

有没有办法使用pandas.apply和可变数量的多个列式参数?例如,假设我有这个数据框:

dictionary.objectForKey("badges")

我想编写一个连接列的函数来生成一个新列 - 与此SO question非常相似。因此,两列示例将是:

df = pd.DataFrame({'A':['a','b','c'],
                    'B':['a','b','c'],
                    'C':['a','b','c'],
                    'D':['a','b','c']})

我使用像这样的功能

def dynamic_concat_2(df, one, two):
    return df[one]+df[two]

现在我无法弄清楚的难点是如何为未知的动态数量的列执行此操作。有没有办法使用** kwargs来推广函数?那么连接可能是1-n列?

附加上下文:这是动态计算行级数据的更大问题的简单示例。未知数量的列具有指定对数据库的查询的数据 - 这将被提供给查询并返回值。我写了一些真正不灵活的可怕的非pythonic解决方案(想想循环遍历每一行数据),但这些解决方案没有奏效。我希望使用df.apply可以python-ify的东西。

1 个答案:

答案 0 :(得分:1)

如果我理解您的问题,在我看来,最简单的解决方案是首先从数据框中选择列,然后应用连接所有列的函数。在我看来,这是动态的,但更清洁。

例如,使用上面的数据:

cols = ['A', 'B', 'C']
df['concat'] = df[cols].apply(''.join, axis=1)

这样

>>> df

   A  B  C  D concat
0  a  a  a  a    aaa
1  b  b  b  b    bbb
2  c  c  c  c    ccc