【问题标题】:Open csv file with Pandas and delete if has only 1 row用 Pandas 打开 csv 文件,如果只有 1 行则删除
【发布时间】:2019-04-17 07:26:43
【问题描述】:

我的任务是创建一个脚本来通过 ssh 每周列出 10 个 cisco 路由器并检查配置更改并发送通知。所以我已经准备好记录并运行命令并将其发送到 csv 的脚本。我已经修改了,所以如果没有更改,我在 csv 中的所有内容将是例如: rtr0003# - 仅是路由器名称。如果有 conf 变化,excel 里面会有例如:

我的问题是如何运行 pandas 来打开每个文件,如果它只看到一行/行来删除 excel 文件,如果有更多行则跳过它。

这就是我编写文件的方式:

files = glob.glob('*.csv')
for file in files:
    df=pd.read_csv(file)
    df=df.dropna()
    df.to_csv(file,index=False)
    df1=pd.read_csv(file,skiprows = 2)
    #df1=df1.drop(df1.tail(1))
    df1.to_csv(file,index=False)

【问题讨论】:

  • 为什么要使用 python / pandas 呢?你可以在 bash 中做到这一点source
  • @forgetso,但是 OP 希望在 python 中使用这个作为选择:-)
  • 一次性使用 paramiko ssh 并运行命令,然后使用 pandas 创建和过滤 csv,然后发送电子邮件。似乎比混合 bash、python 等更容易。

标签: python pandas opencsv


【解决方案1】:

这是一个使用 pandas 的解决方案:

import pandas as pd
import glob
import os

csv_files = glob.glob('*.csv')
for file in csv_files:
    df_file = pd.read_csv(file, low_memory = False)
    if len(df_file) == 1:
        os.remove(file)

如果您使用的是excel文件,请更改

glob.glob('*.csv')  

glob.glob('*.xlsx')

pd.read_csv(file, low_memory = False)

pd.read_excel(file)

【讨论】:

    【解决方案2】:
    import os    
    import glob
    import csv
    
    files = glob.glob('*.csv')
    
    for file in files:
        with open(file,"r") as f:
            reader = csv.reader(f,delimiter = ",")
            data = list(reader)
            row_count = len(data)
    
        if row_count == 1:
            os.remove(file)
    

    【讨论】:

      猜你喜欢
      • 2019-01-12
      • 2020-06-15
      • 1970-01-01
      • 2015-10-13
      • 1970-01-01
      • 2011-11-07
      • 1970-01-01
      • 2018-04-16
      • 1970-01-01
      相关资源
      最近更新 更多