0
我有一个3k-4k列的Spark数据框,我想删除名称满足某些变量条件的列。其中ColumnName Like'foo'。使用正则表达式来过滤PySpark数据框的列(按名称)
我有一个3k-4k列的Spark数据框,我想删除名称满足某些变量条件的列。其中ColumnName Like'foo'。使用正则表达式来过滤PySpark数据框的列(按名称)
要获取使用的列名称df.columns
和drop()
支持在一次调用中删除多个列。下面的代码使用这两个,并做你需要的:
condition = lambda col: 'foo' in col
new_df = df.drop(*filter(condition, df.columns))
这绝对解决了我的问题,但我不明白的语法。 * filter我解释为包含'* foo'的任何列,但事实并非如此。 foo似乎被视为子字符串,即* foo *。你能指出详细说明这种方法的文档吗?感谢真棒的帮助。 – DespicableMe
'filter'是内置的python方法,比过滤任何可迭代的集合。你可以在这里找到文档:https://docs.python.org/3/library/functions.html#filter – Mariusz