小编Mic*_*nry的帖子

将具有多个参数的函数传递给DataFrame.apply

假设我有一个像这样的数据框:

df = pd.DataFrame([['foo', 'x'], ['bar', 'y']], columns=['A', 'B'])


       A    B
0    foo    x
1    bar    y
Run Code Online (Sandbox Code Playgroud)

对于数据帧,我知道如何在Apply中使用单个参数函数,如下所示:

def some_func(row):
    return '{0}-{1}'.format(row['A'], row['B'])

df['C'] = df.apply(some_func, axis=1)

df


       A    B        C
0    foo    x    foo-x
1    bar    y    bar-y
Run Code Online (Sandbox Code Playgroud)

当数据框包含多个输入参数时,如何使用Apply?这是我想要的示例:

def some_func(row, var1):
    return '{0}-{1}-{2}'.format(row['A'], row['B'], var1)

df['C'] = df.apply(some_func(row, var1='DOG'), axis=1)

df


       A    B            C
0    foo    x    foo-x-DOG
1    bar    y    bar-y-DOG
Run Code Online (Sandbox Code Playgroud)

我不是在寻找解决此特定示例的变通方法,而只是在一般情况下如何执行此操作。任何建议将不胜感激,谢谢。

python function pandas multiple-arguments

9
推荐指数
2
解决办法
5652
查看次数

合并具有重复值的数据框上的项目

所以我有一个数据帧(或系列),其中每列'A'总共出现4次,如下所示:

df = pd.DataFrame([['foo'],
                   ['foo'],
                   ['foo'],
                   ['foo'],
                   ['bar'],
                   ['bar'],
                   ['bar'],
                   ['bar']],
                  columns=['A'])
       A
0    foo
1    foo
2    foo
3    foo
4    bar
5    bar
6    bar
7    bar
Run Code Online (Sandbox Code Playgroud)

我还有另一个数据框,其值类似于A列中的值,但它们并不总是有4个值.他们还有更多列,如下所示:

df_key = pd.DataFrame([['foo', 1, 2],
                       ['foo', 3, 4],
                       ['bar', 5, 9],
                       ['bar', 2, 4],
                       ['bar', 1, 9]],
                      columns=['A', 'B', 'C'])

       A    B    C
0    foo    1    2
1    foo    3    4
2    bar    5    9
3    bar    2    4
4    bar    1    9
Run Code Online (Sandbox Code Playgroud)

我想合并他们,他们最终使用类似的东西:

df.merge(df_key, how='left', on='A', copy=False)

       A    B …
Run Code Online (Sandbox Code Playgroud)

python merge duplicates dataframe pandas

5
推荐指数
1
解决办法
76
查看次数