在新列中转换json内容

问题描述 投票:0回答:1

我有一个带有semi structured data的数据集,我需要在其他列的json列内转换content

数据:

    customer    flow    session timestamp               content
1   C1000   F1000   S2000   2019-12-16 13:59:58+00:00   {'name': ''}
2   C1000   F1000   S2000   2019-12-16 13:59:59+00:00   {'name': 'joao'}
4   C1000   F1000   S2000   2019-12-16 13:59:59+00:00   {'cpf': '733.600.420-26'}

所需的结果看起来像这样:

+--------+-----+-------+-------------------+-------------------+-----+--------------+------------------+
|customer|flow |session|first_answer_dt    |last_answer_dt     |name |cpf           |delivery_confirmed|
+--------+-----+-------+-------------------+-------------------+-----+--------------+------------------+
|C1000   |F1000|S1000  |2019-12-16T13:59:58|2019-12-16T14:00:01|maria|305.584.960-40|sim               |
|C1000   |F1000|S2000  |2019-12-16T13:59:59|2019-12-16T14:00:00|joao |733.600.420-26|não               |
+--------+-----+-------+-------------------+-------------------+-----+--------------+------------------+

我正在互联网上搜索,但是很难找到这种情况的解决方案。

python python-3.x pandas pyspark
1个回答
0
投票

IIUC,您可以尝试.joinpd.Series

#use eval if your json is a string.
df1 = df.join(df['content'].map(eval).apply(pd.Series)).drop('content',axis=1)
print(df1)
  customer   flow session                 timestamp  name             cpf
0    C1000  F1000   S2000 2019-12-16 13:59:58+00:00                   NaN
1    C1000  F1000   S2000 2019-12-16 13:59:59+00:00  joao             NaN
2    C1000  F1000   S2000 2019-12-16 13:59:59+00:00   NaN  733.600.420-26
© www.soinside.com 2019 - 2024. All rights reserved.