【问题标题】:Converting a List to pandas dataframe将列表转换为熊猫数据框
【发布时间】:2017-08-26 18:17:37
【问题描述】:

我有以下列表,其中的值附加在循环中,例如:

appended_data.append({'A': var.FIRST, 'B':VAR.SECOND})

打印时:

appended_data[:1]

输出:

[{'A':
904 23
945   65
965   36
Name: FIRST, dtype: float64,'B': 932    54
945 66
987 45
936 90
Name: SECOND, dtype: float64}]

我想要做的就是将它转换为一个 pandas 数据框,如下所示:

keys = ['FIRST','SECOND']
data_pol=pd.DataFrame(appended_data,columns = keys)

但是打印data_pol.head()后数据框是空的?

【问题讨论】:

  • 您的“列表”在语法上不是有效的 Python。您的数据实际上是什么样的?
  • 已编辑。
  • 太好了,现在告诉我们var.FIRSTVAR.SECOND 是如何定义的,以及您希望如何将它们插入DataFrame。在您的问题因难以理解而结束之前,请尝试提前考虑一下。
  • 也许你还需要展示更多appended_data...

标签: python pandas jupyter-notebook


【解决方案1】:

您想在appended_data 的第一个元素上调用pd.DataFrame。您在列表中调用它。
appended_data[:1]appended_data[0] 不同

pd.DataFrame(appended_data[0])

        A     B
904  23.0   NaN
936   NaN  90.0
945  65.0  66.0
965  36.0   NaN
987   NaN  45.0

考虑系列词典appended_data

appended_data = [
    dict(
        A=pd.Series([23, 65, 36], [704, 745, 765]),
        B=pd.Series([66, 45, 90], [745, 787, 736])
    ),
    dict(
        A=pd.Series([23, 65, 36], [804, 845, 865]),
        B=pd.Series([66, 45, 90], [845, 887, 836])
    ),
    dict(
        A=pd.Series([23, 65, 36], [904, 945, 965]),
        B=pd.Series([66, 45, 90], [945, 987, 936])
    ),
]

那么我们可以使用pd.concat

pd.concat([pd.DataFrame(i) for i in appended_data])

        A     B
704  23.0   NaN
736   NaN  90.0
745  65.0  66.0
765  36.0   NaN
787   NaN  45.0
804  23.0   NaN
836   NaN  90.0
845  65.0  66.0
865  36.0   NaN
887   NaN  45.0
904  23.0   NaN
936   NaN  90.0
945  65.0  66.0
965  36.0   NaN
987   NaN  45.0

【讨论】:

  • 你确定吗? OP 只显示了第一个元素,但似乎还有很多。
  • @alexis 不,我不确定!我正在猜测。有时,OP 帮助制定他们的想法是有帮助的。我打算打开一个对话框并帮助确定 OP 想要和期望什么。
  • 谢谢。这真的很有帮助。
猜你喜欢
  • 2019-10-12
  • 1970-01-01
  • 1970-01-01
  • 2018-08-25
  • 2023-03-30
  • 2017-12-12
  • 2018-11-25
  • 1970-01-01
相关资源
最近更新 更多