我的csv文件包含以下列:AFM_反转_指示器、警报_消息、 axios _密钥、_时间表、播放器、__mv_Splunk_警报_ID、__mv_编号_塑料、__mv_代码_帐户_统计_演示。
我想删除以“__mv”开头的列。我看到一些帖子用Pandas来过滤掉列。是否可以使用Python中的csv模块来完成此操作,如果可以,如何操作?另外,使用Pandas,我应该给予什么正则表达式:
df.filter(regex='')
df.to_csv(output_file_path)
注:我正在使用python3. 8
2条答案
按热度按时间pdtvr36n1#
您不需要为此使用
.filter
,只需找出哪些列,然后将它们从DataFrame中删除即可mv_columns
将遍历DataFrame中的列,并选择那些以“__mv”开头的列,然后.drop
将删除这些列。如果出于某种原因,您只想使用
csv
包,那么解决方案可能没有pandas
那么优雅。因此,首先,读取应该是标题的第一行。使用与前面类似的逻辑,找到以“__mv”开头的列,然后获取它们的索引。将新列写入输出文件,并将不存在的列写入“__mv”列。然后,需要迭代CSV的其余部分,并删除这些列。
ljsrvy3e2#
你的意思是用标准的python?你可以使用列表解析,例如。
然而,这只是一个简单的例子,你可能会有更多的事情要考虑,例如,你的csv列是什么类型,你是想像我这样一次读取所有的数据,还是一个接一个地从生成器读取以节省内存,等等。
您也可以使用内置的
filter
命令来代替内部列表解析。另外,如果你安装了numpy,并且你想要更"数字化"的东西,你可以使用"结构化numpy数组"(https://numpy.org/doc/stable/user/basics.rec.html)。它们很不错。(我个人更喜欢它们而不是panda)。numpy也有自己的csv读取功能(参见:https://www.geeksforgeeks.org/how-to-read-csv-files-with-numpy/)