我想在 pyspark 数据框中删除包含以下任何单词的列banned_columns
从剩余的列中列出并形成一个新的数据框
banned_columns = ["basket","cricket","ball"]
drop_these = [columns_to_drop for columns_to_drop in df.columns if columns_to_drop in banned_columns]
df_new = df.drop(*drop_these)
的想法banned_columns
是删除以basket
and cricket
,以及包含该词的列ball
以他们的名字命名的任何地方。
以上是我到目前为止所做的,但它不起作用(因为在新数据框中仍然包含这些列名称)
数据框示例
sports1basketjump | sports
在上面的列名称示例中,它将删除该列sports1basketjump
因为它包含“篮子”一词。
此外,正在使用filter
or/and reduce
与创建列表和 for 循环相比,函数增加了优化?
您的列表理解不符合您的预期。它将返回一个空列表,除非exactly匹配一个字符串。有关如何将子字符串列表与字符串列表进行匹配的答案,请查看将子字符串列表与Python中的字符串列表进行匹配 https://stackoverflow.com/questions/17234965/matching-list-of-substrings-to-a-list-of-strings-in-python
The df.drop(*cols)
将按您的预期工作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)