在pandas数据框中填充新列,该数据框从其他列获取输入

时间:2017-02-13 11:05:23

标签: python pandas

我有一个函数,它应该将x,y,z作为输入并返回r作为输出。 例如:my_func(x,y,z)取x = 10,y ='apple',z = 2并返回r列中的值。类似地,函数采用x = 20,y ='orange'和z = 4并填充r列中的值。有什么建议可以提供有效的代码吗?

之前:

   a  x       y       z      
   5  10   'apple'    2
   2  20   'orange'   4
   0  4    'apple'    2
   5  5    'pear'     6

之后:

   a  x       y       z      r
   5  10   'apple'    2      x
   2  20   'orange'   4      x
   10  4   'apple'    2      x
   5  5    'pear'     6      x

1 个答案:

答案 0 :(得分:1)

取决于您的功能有多复杂。通常,您可以使用pandas.DataFrame.apply

>>> def my_func(x):
...     return '{0} - {1} - {2}'.format(x['y'],x['a'],x['x'])
... 
>>> df['r'] = df.apply(my_func, axis=1)
>>> df
   a   x         y  z                  r
0  5  10   'apple'  2   'apple' - 5 - 10
1  2  20  'orange'  4  'orange' - 2 - 20
2  0   4   'apple'  2    'apple' - 0 - 4
3  5   5    'pear'  6     'pear' - 5 - 5

axis=1是为了让您的功能适用于每一行'而不是每个列`':

  

传递给函数的对象是具有索引的Series对象   DataFrame的索引(轴= 0)或列(轴= 1)

但如果它的功能非常简单,就像上面那样,你甚至可以在没有功能的情况下使用矢量化操作。