如何使用 "pandas json normalize" 按原样(作为字符串)转换值?

How to use "pandas json normalize" to convert values as it is (as string)?

有一些数据,

df = pd.DataFrame({
    "data": [
        {"a":1},
        {"b":2.1}
    ]
 })
       data
0  {'a': 1}
1  {'b': 2.1}

使用 .json_normalize:

扩展列中的字典
df2 = pd.json_normalize(df['data'])

     a    b
0  1.0  NaN
1  NaN  2.1

这些值如何表示为与原始数据相同,如下所示:

     a    b
0    1  NaN
1  NaN  2.1

一个虚拟解决方案似乎是添加一个字符串,例如

df = pd.DataFrame({
    "data": [
        {"a":1},
        {"b":2.1},
        {"a": "dummy"}
    ]
 })

然后

pd.json_normalize(df['data'])
       a    b
0      1  NaN
1    NaN  2.1
2  dummy  NaN

什么是更聪明的解决方案?

你可以试试这个:

pd.json_normalize(
    df["data"].apply(lambda x: {key: str(value) for key, value in x.items()})
)

# Output in Jupyter cell
     a    b
0    1  NaN
1  NaN  2.1