首页 > 解决方案 > 在函数中操作 DataFrame

问题描述

我需要创建一个可以作用于任何数据帧并对其执行操作的函数。

为了澄清,例如,假设我在这里有这个示例数据框:

df = pd.DataFrame(np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]),
               columns=['a', 'b', 'c'])

看起来像这样。

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

我创建了一个执行此类操作的函数:

def ColDrop(df, collist):
> df=df.drop(columns = collist)
> return df

(假设 > 作为缩进)

我想要的是它接受一个列表作为“collist”变量,并从数据框中删除所有这些“df”,所以......

col = ['a', 'b']
ColDrop(df, col) 

看起来像...

   c
0  3
1  6
2  9

但是,它似乎不起作用。同样,我想根据其行从任何数据框中删除值,例如...

def rowvaluedrop(df, column, pattern):
> filter = df[column].str.contains(pattern)
> df = df[~filter]
> return df

rowvaluedrop(df, a, 4)

看起来像...

   a  b  c
0  1  2  3
2  7  8  9

(我意识到第二个示例可能不起作用,因为这些值是整数而不是字符串,但我希望我的观点无论如何都能得到理解。)

提前致谢。

标签: pythonpandasfunction

解决方案


您需要将returning dataframe背面df隐式存储

df = rowvaluedrop(df, a, 4)

推荐阅读