【问题标题】:Pandas apply Series- Order of the columns熊猫应用系列 - 列的顺序
【发布时间】:2019-07-13 06:07:46
【问题描述】:

为了每秒聚合和查找值,我在 Python 中使用 pandas 执行以下操作,但是,在记录到文件的输出中并没有以它们在此处出现的方式显示列。这些列名以某种方式进行了排序,因此 TotalDMLsSec 出现在 UpdateTotal 和 UpdatesSec 之前。

    'DeletesTotal': x['Delete'].sum(),
    'DeletesSec': x['Delete'].sum()/VSeconds,
    'SelectsTotal': x['Select'].sum(),
    'SelectsSec': x['Select'].sum()/VSeconds,
    'UpdateTotal': x['Update'].sum(),
    'UpdatesSec': x['Update'].sum()/VSeconds,
    'InsertsTotal': x['Insert'].sum(),
    'InsertsSec': x['Insert'].sum()/VSeconds,
    'TotalDMLsSec':(x['Delete'].sum()+x['Update'].sum()+x['Insert'].sum())/VSeconds
    })
)
df.to_csv(/home/summary.log,sep='\t', encoding='utf-8-sig')

除了以上问题,还有几个问题-

  1. 尽管记录为 csv 格式,但所有值/列都出现在 excel 的一列中,是否可以正确加载数据 CSV
  2. 写入 csv 文件时,是否可以默认基于一列(比如说 InsertsSec)对行进行排序?

我们将不胜感激。

【问题讨论】:

  • 您好!请每个帖子问一个问题。这是这里的规则,每个帖子一个问题。
  • 您可以明确地重新排序列。 stackoverflow.com/questions/35321812/…您还应该指定您正在使用的 Python 和 pandas 的版本。

标签: python pandas


【解决方案1】:

假设你的 DataFrame 是这样的:

      Deletes  Selects  Updates  Inserts
Name                                    
Xxx        20       10       40       50
Yyy        12       32       24       11
Zzz        70       20       30       20

那么 totaltotal per sec 都可以计算为:

total = df.sum().rename('Total')
VSeconds = 5   # I assumed some value
tps = (total / VSeconds).rename('Total per sec')

然后您可以将以上两行都添加到 DataFrame 中:

df = df.append(totals).append(tps)

缺点是所有数字都转换为float。 但是在 Pandat 中没有其他方法,因为每一列都必须有 一个类型的值。

然后你可以例如将其写入 CSV 文件(包括总数)。

【讨论】:

    【解决方案2】:

    我就是这么干的

        df.to_excel(vExcelFile,'All')
        vSortedDF=df.sort_values(['Deletes%'],ascending=False)
        vSortedDF.loc[vSortedDF['Deletes%']> 5, ['DeletesTotal','DeletesSec','Deletes%']].to_excel(vExcelFile,'Top Delete objects')
    vExcelFile.save()
    

    对于 CSV,而不是使用单独的 \t 使用 , 并且它工作得很好。 df.to_csv(/home/summary.log,sep='\t', encoding='utf-8-sig')

    【讨论】:

      猜你喜欢
      • 2019-05-24
      • 2021-02-16
      • 2020-05-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-03
      相关资源
      最近更新 更多