在解析来自Json File的数据时如何仅获取Python脚本中的必需列

时间:2019-05-09 13:44:58

标签: python arrays json pandas dataframe

我正在尝试编写python脚本。根据要求,我将有大约400列,这些列将根据JSON文件中的多个数组出现。

我正在使用Pandas库和python 3.6版。我可能从JSON文件中获得的列多于400列。我如何限制不需要的列,而我只想在python输出文件中获取指定的列。

我正在使用以下代码按指定列获取数据。

问题:在我的输出文件中,除了列列表文件中提到的列之外,我还获取了其余的列。如何限制不需要的列并仅在输出中获得必需的列?

with open('Columns.txt') as c:
    columns_list = c.readlines()
    with open('JsonFile.json') as f:
    json_file = json.load(f)

    df = pd.DataFrame(columns=columns_list)

,我还有一个场景。.目前,我的数据如下示例数据。

我有70%的案例具有[attributes] [ABC] [Values] [Value]之类的数据,而在其余案例中,我具有[attributes] [Xdfghgjgjgj] [grp](这里有2条记录)。要处理这种类型的方案多值属性,您可以帮我一些解决方案

{
  "entities": [
    {
      "id": "XXXXXXXXXXXXXXX",
       "data": {
        "attributes": {
          "ABC": {
            "values": [
              {
                "value": 00000000000000
              }
            ]
          }
          "Xdfghgjgjgj": {
            "grp": [
              {
                "SUPP": {
                  "values": [
                    {
                      "value": "000000000000000000"
                    }
                  ]
                },
                "yfyfyfyfyfy": {
                  "values": [
                    {
                      "value": "909000090099090"
                    }
                  ]
                },
              },
              {
                "SUPP": {
                  "values": [
                    {
                      "value": "000000000000000000"
                    }
                  ]
                },
                "yfyfyfyfyfy": {
                  "values": [
                    {
                      "value": "909000090099090"
                    }
                  ]
                },
              }
            ]
          }
          }

1 个答案:

答案 0 :(得分:0)

有一种方法可以使用pandas从csv中读取特定的列:

import pandas as pd
cols= ['col1', 'col2', 'col3']

df = pd.read_csv('JsonFile.csv', skipinitialspace=True, usecols=cols)

#save to output
df.to_csv('output.csv',Index=False)

或者您可以在保存文件时指定列:

df = pd.read_csv('JsonFile.csv')
df[column_names].to_csv('output.csv',index=False)

编辑:

with open('Columns.txt') as c:
    columns_list = c.readlines()
with open('JsonFile.json') as f:
    json_file = json.load(f)

#df = pd.DataFrame.from_dict(json_file, orient='columns')
df = pd.DataFrame(json_file)
df[columns_list].to_csv('output.csv',index=False)