假设我有一个像这样的数据框:
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)
我不是在寻找解决此特定示例的变通方法,而只是在一般情况下如何执行此操作。任何建议将不胜感激,谢谢。
所以我有一个数据帧(或系列),其中每列'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)