【问题标题】:looping through the rows of a dataframe循环遍历数据框的行
【发布时间】:2016-12-23 19:37:26
【问题描述】:

我正在尝试将 csv 文件读入数据框,以便在生成的 sql 选择语句中使用这些字段。数据如下所示:

         0    1     2     3     4           5            6
0  status1   A0   NaN   NaN     3   Customer1  customer Id
1  status2   A1   NaN   NaN     3   Customer2  customer Id
2  status3   A2   NaN  1253     3   Customer3  customer Id
3  status4   A3  27.0    L0     12  Customer4  customer Id
4  status5   A3  30.0   NaN     12  Customer5  customer Id

当我遍历每一行并尝试将字段插入字符串时:

for row in M:
print("(Select '{}' as disposition, '{}' as category_code, '{}' as status_code, '{:02f}' as Payer_reason_code, {} as precedence, {} as source_id, '{}' as reco_id) union"
          .format(M[row][0], M[row][1], M[row][2], M[row][3], M[row][4], M[row][5], M[row][6]))

抛出此错误:

第 14 行,在 print("(Select '{}' 作为 disposition,'{}' 作为 category_code,'{}' 作为 status_code,'{:02f}' 作为 Payer_reason_code,{} 作为优先级,{} 作为 source_id,'{}' 作为reco_id) union".format(M[row][0], M[row][1], M[row][2], M[row][3], M[row][4], M[row ][5], M[行][6])) IndexError: 用作索引的数组必须是整数(或布尔)类型

如何循环遍历一个 numpy 二维数组?

这是完整的脚本:

import pandas as pd
import os
import numpy as np

path = '../resources'

X = pd.read_csv('../resources/data.csv', header=None).as_matrix()

for row in X:
    print("(Select '{}' as disposition, '{}' as category_code, '{}' as status_code, '{:02f}' as Payer_reason_code, {} as precedence, {} as source_id, '{}' as reco_id) union".format(X[row][0], X[row][1], X[row][2], X[row][3], X[row][4], X[row][5], X[row][6]))

【问题讨论】:

  • 这是熊猫而不是 numpy。
  • 如果你想要numpy,请使用X.values
  • 为什么要循环播放? Pandas 可以通过一次调用直接附加到数据库中:to_sql

标签: python pandas


【解决方案1】:

你不能像这样遍历数据框。

for i, row in M.iterrows():
    print("(Select '{}' as disposition, '{}' as category_code, '{}' as status_code, '{:02f}' as Payer_reason_code, {} as precedence, {} as source_id, '{}' as reco_id) union"
      .format(row[0], row[1], row[2], row[3], row[4], row[5], row[6]))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-07
    • 2022-01-20
    • 2018-12-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多