Excel 列数据需要转换为用双引号括起来的值列表,然后通过排除起始括号写入 json 文件



下面是 excel 文件

col1 col2
1     a,b,c
2     a

我正在将 excel 文件数据读入数据帧

df=pd.read_excel(excel_path, sheetname='data')

东风

   col1   col2
0     1   a,b,c
0     2   a
dfj=df.to_json(orient="records")

东风

'[{"col1":1,"col2":"a,b,c"}]'

在这里我需要 dfj 输出是这样的

'{"col1":1,"col2":["a","b","c"]}'

有人可以帮我编码吗?

使用 Series.str.split

df["col2"] = df["col2"].str.split(",")
dfj = df.to_json(orient="records")
print (dfj)
[{"col1":1,"col2":["a","b","c"]}]

如果可能的话,由字符串填充多个列,需要拆分它们:

cols = df.select_dtypes('object').columns
df[cols] = df[cols].apply(lambda x: x.str.split(","))
dfj = df.to_json(orient="records")

或者创建用于拆分的列列表:

cols = ['col2', 'another col', ...]
df[cols] = df[cols].apply(lambda x: x.str.split(","))
dfj = df.to_json(orient="records")

如果需要删除第一个和最后一个[]使用 strip - .str 不是必需的,因为使用纯 python:

dfj = df.to_json(orient="records").strip('[]')
print (dfj)
{"col1":1,"col2":["a","b","c"]}

你去吧

import json
import pandas as pd
# json string
dfjs = '[{"col1":1,"col2":"a,b,c"}]'
# converting json string into json object 
dfj = json.loads(dfjs)[0]
# converting col2 values into list of values 
dfj["col2"] = dfj["col2"].split(",")
# converting json object into dataframe object
df = pd.DataFrame(dfj)
print(df)

输出

  col1 col2
0     1    a
1     1    b
2     1    c

在这里看到它的实际效果。

相关内容

最新更新