Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何对某些列使用df.groupby(cols.apply)(my_func),而保留一些未处理的列?_Python_Pandas - Fatal编程技术网

Python 如何对某些列使用df.groupby(cols.apply)(my_func),而保留一些未处理的列?

Python 如何对某些列使用df.groupby(cols.apply)(my_func),而保留一些未处理的列?,python,pandas,Python,Pandas,假设我有一个数据帧df有a、b、c、d…z列。我想:df.groupby('a')。对d-z列应用(my_func()),而将'b'和'c'列保持不变。怎么做 我注意到熊猫可以通过传递dict对不同的列应用不同的函数。但我有一个很长的列列表,只想设置参数或提示参数,让Pandas绕过一些列,将my_func()应用到其余的列?(否则,我必须构建一个长dict)一个简单(通用)的方法是使用您感兴趣的子集创建数据帧视图(或者,在您的案例中,使用一个视图,其中包含除您希望忽略的列之外的所有列),然后使

假设我有一个数据帧
df
有a、b、c、d…z列。我想:
df.groupby('a')。对
d-z
列应用(my_func())
,而将
'b'和'c'列保持不变。怎么做

我注意到熊猫可以通过传递dict对不同的列应用不同的函数。但我有一个很长的列列表,只想设置参数或提示参数,让Pandas绕过一些列,将
my_func()
应用到其余的列?(否则,我必须构建一个长dict)

一个简单(通用)的方法是使用您感兴趣的子集创建数据帧视图(或者,在您的案例中,使用一个视图,其中包含除您希望忽略的列之外的所有列),然后使用APPLY来创建该视图

In [116]: df
Out[116]: 
     a  b         c  d        f
0  one  3  0.493808  a      bob
1  two  8  0.150585  b    alice
2  one  6  0.641816  c  michael
3  two  5  0.935653  d      joe
4  one  1  0.521159  e     kate
使用您喜欢的方法创建所需的视图。您可以选择一系列列,如so
df_view=df.ix[:,'b':'d']
,但以下内容可能对您的场景更有用:

#I want all columns except two 
cols = df.columns.tolist()    
mycols = [x for x in cols if not x in ['a','f']]
df_view = df[mycols]
将您的函数应用于该视图。(注意,这还没有改变df中的任何内容。)

使用Update()更新df

In [158]: df_view.apply(lambda x: x /2)
Out[158]: 
   b         c   d
0  1  0.246904  20
1  4  0.075293  25
2  3  0.320908  28
3  2  0.467827  28
4  0  0.260579  24
In [156]: df.update(df_view.apply(lambda x: x/2))

In [157]: df
Out[157]: 
     a  b         c   d        f
0  one  1  0.246904  20      bob
1  two  4  0.075293  25    alice
2  one  3  0.320908  28  michael
3  two  2  0.467827  28      joe
4  one  0  0.260579  24     kate