【问题标题】:JSON data to columns in a DataFrameJSON 数据到 DataFrame 中的列
【发布时间】:2016-07-07 11:25:29
【问题描述】:

我有一个熊猫数据框形式的数据,看起来像这样:

A      B                               C
ab     {"app":"x","wid":10,"a42":5}    e
y      {"hair":"x","wid":10,"a42":2}   r

我想像这样转换我的数据框:

A    C    app    wid    a42    hair
ab   e    x      10     5      -
y    r    -      10     2      r

这些问题没有帮助:
JSON to pandas DataFrame
Convert Json data to Python DataFrame
How to convert a parsed json file to pandas data frame?

而且我还看到了许多其他链接,但遇到了这个问题。

【问题讨论】:

标签: python json pandas dataframe


【解决方案1】:

试试这个:

In [143]: df.B.apply(pd.Series)
Out[143]:
   a42  app hair  wid
0    5    x  NaN   10
1    2  NaN    x   10

【讨论】:

    【解决方案2】:

    您可以使用DataFrame.from_recordsconcat

    import pandas as pd
    
    df = pd.DataFrame({'A':['ab','y'],
                       'B':[{"app":"x","wid":10,"a42":5},{"hair":"x","wid":10,"a42":2}],
                       'C':['e','r']})
    print (df)
        A                                   B  C
    0  ab   {'a42': 5, 'wid': 10, 'app': 'x'}  e
    1   y  {'a42': 2, 'wid': 10, 'hair': 'x'}  r
    
    print (pd.DataFrame.from_records(df.B))
       a42  app hair  wid
    0    5    x  NaN   10
    1    2  NaN    x   10
    
    print (pd.concat([df[['A','C']], pd.DataFrame.from_records(df.B)], axis=1))
        A  C  a42  app hair  wid
    0  ab  e    5    x  NaN   10
    1   y  r    2  NaN    x   10
    

    【讨论】:

    • 我没有这种形式的数据:{'A':['ab','y'], 'B':[{"app":"x","wid" :10,"a42":5},{"hair":"x","wid":10,"a42":2}], 'C':['e','r']}。我以数据框的形式拥有它,当我执行“pd.DataFrame.from_records(df.B)”过程时,结果出现错误。
    • 是的,我知道。你有df 格式的数据,对吧?我添加了创建 df 以进行更好的测试。
    【解决方案3】:

    试试这个;

    df["B"] = df["B"].apply(lambda x : dict(eval(x)) )
    or 
    df["B"] = df["B"].map(eval)
    
    df2 = df["B"].apply(pd.Series )
    result = pd.concat([df, df2], axis=1).drop('B', axis=1)
    

    【讨论】:

    • 如果这个答案有帮助,请点赞并纠正。
    猜你喜欢
    • 1970-01-01
    • 2022-08-02
    • 2019-02-03
    • 1970-01-01
    • 2022-11-17
    • 1970-01-01
    • 2017-12-21
    • 2018-06-09
    • 2020-01-15
    相关资源
    最近更新 更多