如何在python中导入csv格式的3D表?

2024-10-03 17:16:51 发布

您现在位置:Python中文网/ 问答频道 /正文

为了在python脚本中操作它,我必须导入一个三维数据表

我拥有的三个维度是:

  1. 覆盖范围
  2. 年龄
  3. 保险费

coverage行和age列不是固定的,这意味着可能会比下面的示例更多或更少

我当前的测试数据看起来(FWD\u FIXED\u 5YRS.csv)是这样的

COVERAGE    Age 18  Age 20  Age 25  Age 30  Age 35  Age 40  Age 45  Age 50  Age 55  Age 60
50000.00    53.00   53.00   53.00   53.00   55.50   67.50   82.50   129.00  175.50  288.50
100000.00   54.00   54.00   54.00   60.00   74.00   117.00  146.00  198.00  331.00  536.00
150000.00   78.50   78.50   81.00   90.00   111.00  169.50  219.00  307.50  496.50  804.00
200000.00   108.00  108.00  108.00  120.00  148.00  222.00  292.00  410.00  662.00  1027.00
250000.00   87.50   87.50   90.00   102.50  124.00  165.00  235.00  350.00  557.50  1215.00
300000.00   105.00  105.00  108.00  123.00  147.00  198.00  282.00  420.00  669.00  1458.00
....
....

我尝试了另一个qn的内容,但我似乎只得到了前几列:

import csv

with open('FWD_FIXED_5YRS.csv', 'r') as f:
    obj = csv.reader(f)
    X, Y, Z = [], [], []
    for i,row in enumerate(obj):
        if i>0:
             xstring = row[0]
             ystring = row[1]
             zstring= row[2]
             print (xstring, ystring, zstring)

Tags: csv脚本objagecoveragerow数据表fixed
2条回答

这可以使用pandas模块轻松完成。 如果您可以使用pandas模块,您可以按如下方式读取您的csv

import pandas as pd
df = pd.read_csv('FWD_FIXED_5YRS.csv', sep='\t', index_col='COVERAGE')
df

结果如下:

            Age 18  Age 20  Age 25  Age 30  Age 35  Age 40  Age 45  Age 50  Age 55  Age 60
COVERAGE                                        
50000.0     53.0    53.0    53.0    53.0    55.5    67.5    82.5    129.0   175.5   288.5
100000.0    54.0    54.0    54.0    60.0    74.0    117.0   146.0   198.0   331.0   536.0
150000.0    78.5    78.5    81.0    90.0    111.0   169.5   219.0   307.5   496.5   804.0
200000.0    108.0   108.0   108.0   120.0   148.0   222.0   292.0   410.0   662.0   1027.0
250000.0    87.5    87.5    90.0    102.5   124.0   165.0   235.0   350.0   557.5   1215.0
300000.0    105.0   105.0   108.0   123.0   147.0   198.0   282.0   420.0   669.0   1458.0

您只能访问每行的前3个元素

         xstring = row[0]
         ystring = row[1]
         zstring= row[2]

如果您打算打印每个年龄段的报道,当您阅读csv时

50000.00 Age 18 53.00

50000.00 Age 20 53.00

50000.00 Age 25 53.00

要保留标题(第一行)和第一列,请执行以下操作:

reader = csv.DictReader(fp)
for row in reader:
    coverage = row.pop('COVERAGE')
    for age, premium in row.items():
        print( coverage, age, premium)

相关问题 更多 >