我有两个函数进行一些计算并得出结果。现在,我可以将其应用到一列中,并以数据框的形式获取结果。 我需要知道如何将函数应用于数据框中的所有列,并以数据框的形式获取结果。
说我有一个如下所示的数据框,我需要在该数据框的每一列上应用该函数,并获得一个数据框,其结果与所有列相对应。
firstbin.rs
结果
secondbin.rs
答案 0 :(得分:1)
这是一个简单的例子
df
A B C D
0 10 11 12 13
1 20 21 22 23
2 30 31 32 33
3 40 41 42 43
# Assume your user defined function is
def mul(x, y):
return x * y
将值相乘
假设您要将第一列“ A”乘以3
df['A'].apply(lambda x: mul(x,3))
0 30
1 60
2 90
3 120
现在,您想将mul函数应用于数据框的所有列并使用结果创建新的数据框
df1 = df.applymap(lambda x: mul(x, 3))
df1
A B C D
0 30 33 36 39
1 60 63 66 69
2 90 93 96 99
3 120 123 126 129
答案 1 :(得分:0)
pd.DataFrame
对象也有自己的apply
method。
根据上面链接的文档中给出的示例:
>>> df = pd.DataFrame([[4, 9],] * 3, columns=['A', 'B'])
>>> df
A B
0 4 9
1 4 9
2 4 9
>>> df.apply(np.sqrt)
A B
0 2.0 3.0
1 2.0 3.0
2 2.0 3.0
结论:您应该可以将函数应用于整个数据框。
答案 2 :(得分:0)
这似乎是您要在输出中尝试做的事情:
df = pd.DataFrame(
[[1456, 6744, 9876, 374, 65413, 1456],
[654, 2314, 674654, 2156, 872, 6744],
[875, 653, 36541, 345, 4963, 9876],
[6875, 7401, 3654, 465, 3547, 374],
[78654, 8662, 35, 6987, 6874, 65413],
[658, 94512, 687, 489, 8756, 5854]],
columns=list('ABCDEF'))
def fn(col):
return col[:-2].values + col[1:-1].values
应用前面的答案中提到的功能:
>>> df.apply(fn)
A B C D E F
0 2110 9058 684530 2530 66285 8200
1 1529 2967 711195 2501 5835 16620
2 7750 8054 40195 810 8510 10250
3 85529 16063 3689 7452 10421 65787