如何使用 "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
有一些数据,
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