【问题标题】:Convert each row of pandas DataFrame to a separate Json string将 pandas DataFrame 的每一行转换为单独的 Json 字符串
【发布时间】:2018-03-31 13:46:47
【问题描述】:

我使用此代码将熊猫 DataFrame df 的每一行转换为 Json 字符串。问题是它正在打印None,但是df.head() 打印出数据。

import pandas as pd
import json

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

for i in df.index:
    print df.loc[i].to_json("row{}.json".format(i))
    if i==10:
        break

如何获取每一行作为Json字符串变量并打印出来? Json 字符串的结构很简单,没有数组,只有字符串、整数和浮点字段。

【问题讨论】:

  • @ScottBoston:问题是如何将每一行转换为 json 字符串,因为我的代码不起作用。

标签: python json python-2.7 pandas


【解决方案1】:

apply 与参数axis=1 一起用于按行处理:

df.apply(lambda x: x.to_json("row{}.json".format(x.name)), axis=1)

如果只想看输出:

df.apply(lambda x: print(x.to_json()), axis=1)

编辑:

使用自定义函数:

def f(x):
    a = x.to_json()
    print (a)


df.apply(f, axis=1)

【讨论】:

  • 我想在for循环中转换每一行,因为df很大,也因为我需要在for循环中进行一些处理。
  • 如果我做for row in df.iterrows(): data = row.to_json(),它不起作用。
  • 好的,谢谢。只是一个小问题。空数据转换为"field1":null。有什么方法可以将所有空字符串转换为""
  • 是的,需要df.fillna("").apply(f, axis=1)
  • 但是我可以将它应用到每一行吗?例如:jsonstring = df.iloc[i].to_json(),那么我应该如何处理jsonstring
【解决方案2】:

.to_json(fname) 函数会将数据直接写入 json 文件,不会向您返回任何内容,因此打印不会返回任何内容,但实际文件在您的文件系统中。


更新:如果你想将json字符串保存为python中的变量,那么不要在函数to_json()中指定文件名参数。你可以这样做:a = df.iloc[0].to_json(),字符串将被保存到变量a

【讨论】:

  • 那么,我怎样才能把这个Json字符串变成一个变量呢?在这种情况下,我想替换为to_json
  • @Dinosaurius 如果在to_json()函数中没有指定文件名参数,可以在python中保存为变量。
【解决方案3】:

我对提出的解决方案不满意并最终这样做:

for chunk in (pd.read_csv(file, sep = ",", header = False, index_col = 0, chunksize=chunk_size)):
    json_chunk = chunk.to_json(orient = "records", force_ascii = True, default_handler = None)

当我读取数百万行时,我的解决方案是使用块来完成的。

【讨论】:

  • 天哪!您节省了很多人工。
【解决方案4】:

感谢这对我使用此方法将最后一列保存为 JSon 有用:

df.assign(ln_A = lambda x: x.to_json()))

【讨论】:

    【解决方案5】:

    为每个数据帧生成一个 json 记录:

    for i in df.index:
        record = df.iloc[i].to_json()
        print(record)
    

    【讨论】:

      猜你喜欢
      • 2020-04-12
      • 2018-07-13
      • 2020-08-06
      • 2020-12-07
      • 1970-01-01
      • 2020-11-20
      • 1970-01-01
      • 2020-10-26
      • 2019-03-15
      相关资源
      最近更新 更多