Mat*_*hew 2 python apache-spark pyspark
我想将包含列表中任何单词的 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)
Run Code Online (Sandbox Code Playgroud)
的想法banned_columns是删除所有以basket和开头的列,以及名称中任意位置cricket包含该单词的列。ball
以上是我到目前为止所做的,但它不起作用(因为在新数据框中仍然包含这些列名称)
数据框示例
sports1basketjump | sports
Run Code Online (Sandbox Code Playgroud)
在上面的列名称示例中,它将删除该列,sports1basketjump因为它包含单词篮子。
此外,使用filteror/andreduce函数是否比创建列表和 for 循环更优化?
您的列表理解不符合您的预期。它将返回一个空列表,除非它与字符串完全匹配。有关如何将子字符串列表与字符串列表进行匹配的答案,请查看Python中的子字符串列表与字符串列表的匹配
它将df.drop(*cols)按您的预期工作。
| 归档时间: |
|
| 查看次数: |
10925 次 |
| 最近记录: |