熊猫行方式映射器

时间:2017-01-09 09:17:12

标签: python pandas mapper

Pandas是否包含一种简单的方法,可以将映射器应用于每一行?

例如:

@Status int state1=bundle.getInt(STATE_ELEMENT1);
setStatus1(state1);
//instead of direct setStatus1(bundle.getInt(STATE_ELEMENT1);

然后应用一些mapper(伪代码)

import pandas as pd
df = pd.DataFrame(
    [[j + (3*i) for j in range(3)] for i in range(4)],
    columns=['a','b','c']
)
print(df)


   a   b   c
0  0   1   2
1  3   4   5
2  6   7   8
3  9  10  11

注意,添加数字确实不是重点。关键是要有一个行式映射器。

2 个答案:

答案 0 :(得分:3)

您可以将apply与参数axis=1

一起使用
df_ret = df.apply(lambda d: d['a'] + d['c'], axis=1)
print(df_ret)
0     2
1     8
2    14
3    20
dtype: int64

但更快的是使用矢量化解决方案:

print (df.a + df.c)
0     2
1     8
2    14
3    20

print (df.a.add(df.c))
0     2
1     8
2    14
3    20
dtype: int64

print (df[['a','c']].sum(axis=1))
0     2
1     8
2    14
3    20
dtype: int64

dtype: int64

答案 1 :(得分:0)

最快的解决方案:http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.add.html因为它是内部优化的