[英]spread json data in one column to multiple columns
使用 Pandas 我创建了一个 csv 文件,其中包含如下数据(一百行):
first second
{'val1': 'm', 'val2': 'f'} {'val3': 'm', 'val4': 'f'}
{'val1': 'g', 'val2': 'h'} {'val3': 'i', 'val4': 'k'}
...
有什么方法可以用 Json 数据的第一部分替换当前的 header。 它的值应该在该列下。 我的意思是这样的:
val1 val2 val3 val4
'm' 'f' 'm' 'f'
'g' 'h' 'i' 'k'
这是一种方法。 我正在使用eval
,因为 CSV 似乎包含字典的字符串表示形式。 (请注意,您应该确定 CSV 来自安全的地方并且不包含任何恶意代码 - 从安全角度来看, eval
是有问题的)。
df["first"] = df["first"].apply(eval)
df["second"] = df["second"].apply(eval)
res = pd.concat([pd.json_normalize(df["first"]), pd.json_normalize(df["second"])], axis=1)
print(res)
==>
val1 val2 val3 val4
0 m f m f
1 g h i k
让我们试试这个,
# pre-processing would be required if column value is string literal
from ast import literal_eval
(
pd.concat([
df[col].apply(lambda x: literal_eval(x))
.apply(pd.Series) for col in df.columns
], axis=1)
)
val1 val2 val3 val4
0 m f m f
1 g h i k
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.