如何在csv文件的列中将最小/最大值转换为JSON格式(如Python中的格式)?

凯瑟琳

我想输入几个csv文件,每个文件看起来像这样:

                column1     column2        column3       
18/05/16 11:19  143501      148686          40644           
18/05/16 11:34  144070      144710          79585           
18/05/16 11:49  134070      144713          79588           
18/05/16 12:03  144070      144716          80591           
18/05/16 12:13  144070      144733          79608           
18/05/16 12:23  154790      144733          79608           
18/05/16 12:19  144070      125753          79628           
18/05/16 12:34  144070      144757          79632           

我想获取每个csv文件中每个列的最大值和最小值(不包括日期/时间列),并将数据放入类似以下的结构中:

{
    'csvfile1' :[{

        "column1": [{
            "max": "154790"
            "min": "134070"
            }],
        "column2": [{
            "max": "148686"
            "min": "125753"
            }],
        "column3": [{
            "max": "80591"
            "min": "40644"
            }]
        }],
    'csvfile2' :[{
        <same type of information here>
    }],
    'csvfile3' :[{
        <same type of information here>
    }]
}

到目前为止,这是我的脚本:

max_min_data={}
for name in csvfile_names:
    f = open(name+'.csv', "r")

    #Only want to check columns 1 to 3 not the date/time
    for number in range(1,3):
        f.seek(0)
        column_names = next(f) next(f) # Skip header
        max_value = max(int(row[number]) for row in csv.reader(f))
        min_value = min(int(row[number]) for row in csv.reader(f))

        max_min_data[name]=[column_names[number]]
        max_min_data[name][column_names[number]]=['max','min']
        max_min_data[name][column_names[number]]['max']=max_value
        max_min_data[name][column_names[number]]['min']=min_value

        print "MAX:"
        print '\t\t'+str(max_value)
        print "MIN:"
        print '\t\t'+str(min_value)
vmg

如果pandas允许使用,这非常简单。您需要将csv加载到数据帧中,使用该describe方法,仅选择'min'和'max'行,然后从该数据帧中创建JSON对象。这里重要的是,熊猫已经提供了所有这些功能

使用将CSV文件作为数据框加载pandas.read_csv假设您将其作为这样的数据框df

                column1  column2  column3
18/05/16 11:19   143501   148686    40644
         11:34   144070   144710    79585
         11:49   134070   144713    79588
         12:03   144070   144716    80591
         12:13   144070   144733    79608
         12:23   154790   144733    79608
         12:19   144070   125753    79628
         12:34   144070   144757    79632

然后,您可以使用desc = df.describe()生成如下数据框desc

            column1        column2       column3
count       8.000000       8.000000      8.000000
mean   144088.875000  142850.125000  74860.500000
std      5545.130565    7045.836226  13829.840615
min    134070.000000  125753.000000  40644.000000
25%    143927.750000  144712.250000  79587.250000
50%    144070.000000  144724.500000  79608.000000
75%    144070.000000  144739.000000  79629.000000
max    154790.000000  148686.000000  80591.000000

如果使用来对上面的数据框的行进行子集化desc.loc[['min','max']],则会得到:

      column1  column2  column3
min   134070   125753    40644
max   154790   148686    80591

然后,您可以通过调用来将其作为JSON对象获取to_json,例如desc.loc[['min','max']].to_json()可以直接保存到文件或生成字符串(请参阅docs)。

从那里开始,组成多个这样的过程并写入文件应该很简单。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Python中将csv文件从宽格式转换为长格式

如何在Python3中将多个文本文件转换为csv格式?

如何在Python中将JSON日期转换为特殊格式?

如何使用分区将最小值/最大值转换为 SQL Server 中的列?

如何将csv文件的列值转换为熊猫中的不同格式结构?

如何在XSLT中将XML数据转换为CSV格式

如何在iOS App中将Realm数据库间接转换为CSV文件格式?

如何在R中将数据帧转换为json格式

如何在 Java 中将 JSON 转换为 Object 格式?

如何将 csv 文件转换为 json 格式的文件?

如何在python中将时间转换为TZ格式

如何在 Python 中将 datettime 转换为 Solr 格式?

如何在python中的csv文件/列中格式化日期时间值?

在C#中如何获取以Unicode格式打印的char的最小值和最大值?

当以秒为单位的大量数字达到平均值,最大值和最小值时,如何转换为日期时间格式?

如何在python中将具有字典格式的txt文件转换为dataframe?

如何在python中将字符串列表转换为具有正确格式的json?

将 csv 转换为 json 文件格式。不确定如何使用 pandas 或 python 在 json 中实现预期输出

如何在Mule 4中将hashmap转换为正确的json格式?

如何在SQL Server 2008中将数据转换为json格式?

如何从 CSV 文件转换为键控格式的 JSON?

使用 Python 将 Json 数据转换为 CSV 文件格式

如何在Anypoint Studio中导入CSV文件并将其转换为JSON格式?

如何從兩個不同的列中打印出 csv 文件中的最小值和最大值?

如何在python 3.5中将现有数据格式化为csv文件中的列

如何在python中将一年中的整数日转换为格式mm/dd

如何在R中将具有大量行的大文件从长格式转换为宽格式?

如何在Java中将文件从一种格式转换为其他格式?

如何在js中将.ass和.ssa字幕文件格式转换为webvtt格式?