如何将多值CSV转换为Json - python

我有一个带有4列数据的csv文件,如下所示。

type,MetalType,Date,Acknowledge     
Metal,abc123451,2018-05-26,Success
Metal,abc123452,2018-05-27,Success
Metal,abc123454,2018-05-28,Failure
Iron,abc123455,2018-05-29,Success
Iron,abc123456,2018-05-30,Failure

(我只是在上面的示例数据中提供了标头,但就我而言,我在数据中没有标头)

我如何将以上csv文件转换为以下格式的Json ...

第一栏:属于-> "type": "Metal"

第二栏:MetalType: "values" : "value": "abc123451"

第三栏:"Date": "values":"value": "2018-05-26"

第四栏:"Acknowledge": "values":"value": "Success"

其余所有列均为默认值。

按照以下格式,

{
  "entities": [
    {
      "id": "XXXXXXX",
      "type": "Metal",
      "data": {
        "attributes": {
          "MetalType": {
            "values": [
              {
                "source": "XYZ",
                "locale": "Australia",
                "value": "abc123451"
              }
            ]
          },
          "Date": {
            "values": [
              {
                "source": "XYZ",
                "locale": "Australia",
                "value": "2018-05-26"
              }
            ]
          },
          "Acknowledge": {
            "values": [
              {
                "source": "XYZ",
                "locale": "Australia",
                "value": "Success"
              }
            ]
          }
        }
      }
      }
    ]
    }

参考方案

即使jww是正确的,我还是为您构建了一些东西:

我使用pandas导入csv:

df = pd.read_csv('data.csv')

然后为您要添加的字典创建一个模板:

d_json = {"entities": []}
template = {
      "id": "XXXXXXX",
      "type": "",
      "data": {
        "attributes": {
          "MetalType": {
            "values": [
              {
                "source": "XYZ",
                "locale": "Australia",
                "value": ""
              }
            ]
          },
          "Date": {
            "values": [
              {
                "source": "XYZ",
                "locale": "Australia",
                "value": ""
              }
            ]
          },
          "Acknowledge": {
            "values": [
              {
                "source": "XYZ",
                "locale": "Australia",
                "value": ""
              }
            ]
          }
        }
      }
      }

现在,您只需要填写字典:

for i in range(len(df)):
    d = template
    d['type'] = df['type'][i]
    d['data']['attributes']['MetalType']['values'][0]['value'] = df['MetalType'][i]
    d['data']['attributes']['Date']['values'][0]['value'] = df['Date'][i]
    d['data']['attributes']['Acknowledge']['values'][0]['value'] = df['Acknowledge'][i]

    d_json['entities'].append(d)

我知道我遍历df的方式有点丑陋,也许有人知道更干净的方式。

干杯!

python JSON对象必须是str,bytes或bytearray,而不是'dict - python

在Python 3中,要加载以前保存的json,如下所示:json.dumps(dictionary)输出是这样的{"('Hello',)": 6, "('Hi',)": 5}当我使用json.loads({"('Hello',)": 6,…

Python uuid4,如何限制唯一字符的长度 - python

在Python中,我正在使用uuid4()方法创建唯一的字符集。但是我找不到将其限制为10或8个字符的方法。有什么办法吗?uuid4()ffc69c1b-9d87-4c19-8dac-c09ca857e3fc谢谢。 参考方案 尝试:x = uuid4() str(x)[:8] 输出:"ffc69c1b" Is there a way to…

Python:无法识别Pip命令 - python

这是我拍摄的屏幕截图。当我尝试在命令提示符下使用pip时,出现以下错误消息:pip无法识别为内部或外部命令,可操作程序或批处理文件。我已经检查了这个线程:How do I install pip on Windows?我所能找到的就是我必须将"C:\PythonX\Scripts"添加到我的类路径中,其中X代表python版本。如您在我的…

Python:如何将有效的uuid从String转换为UUID? - python

我收到的数据是 { "name": "Unknown", "parent": "Uncategorized", "uuid": "06335e84-2872-4914-8c5d-3ed07d2a2f16" }, 我需要将uuid从Strin…

Python-将字节数组转换为JSON格式 - python

我想将bytes数组转换为JSON格式。这是我的来源:my_bytes_value = b'[{\'Date\': \'2016-05-21T21:35:40Z\', \'CreationDate\': \'2012-05-05\', \'LogoType\&…