【问题标题】:How create dataframe with columns name from dictionary如何使用字典中的列名创建数据框
【发布时间】:2021-09-27 04:48:23
【问题描述】:

从此代码:

response=session.get(urllink) 
tabella=pd.read_json(response.content)
data=tabella["table"]
print(data)

我得到了这本字典(或者我认为它是一本字典),我如何创建一个以 AAA、BBB、CCC 作为列名并在列中排序的所有数据的数据框?

0      {'AAA': '111', 'BBB': '111', 'CCC': '111',...
1      {'AAA': '222', 'BBB': '222', 'CCC': '222',...
2      {'AAA': '333', 'BBB': '333', 'CCC': '333',...
3      {'AAA': '444', 'BBB': '444', 'CCC': '444',...
4      {'AAA': '555', 'BBB': '555', 'CCC': '555',...
...
Name: table, Length: 200, dtype: object```

我试过了 df=pd.DataFrame.from_dict(data) 但我得到了和以前一样的结果

【问题讨论】:

  • tabella=pd.read_json(response.content, lines=True) ?
  • 你得到的data 对象不是字典。它是一个 pandas Series 对象(tabella 是一个 pandas DataFrame;当您执行 tabella["table"] 时,您会从该 dataframe 中获得一个列,它是一个系列)。

标签: python json pandas dataframe


【解决方案1】:

试试

out = pd.DataFrame(df["table"].tolist())

【讨论】:

    【解决方案2】:

    尝试在列上应用pd.Series

    print(df["table"].apply(pd.Series))
    

    打印:

       AAA  BBB  CCC
    0  111  111  111
    1  222  222  222
    2  333  333  333
    3  444  444  444
    4  555  555  555
    

    【讨论】:

    • 是的,效果很好!我不知道pd.Series,谢谢!!!
    • 这里真正的魔力实际上是.apply() 方法。问题末尾的内容 (data) 本身就是 pd.Series
    猜你喜欢
    • 2020-11-12
    • 2021-08-18
    • 2021-01-26
    • 2016-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-10
    • 2023-02-05
    相关资源
    最近更新 更多