繁体   English   中英

将一列中的 json 数据传播到多列

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM