【问题标题】:How to create a DataFrame from a list with complex structure?如何从具有复杂结构的列表中创建 DataFrame?
【发布时间】:2020-09-23 20:30:17
【问题描述】:

我有一个包含多列(a、b、c、d)的数据框。我将我的数据框按“c”和“d”列以及“a”列相对于“b”列进行分组。这给了我以下格式的输出(类似于 '1500, 1400 ... 700' 的值是执行集成的结果):

c d
1 10  1500
  20  1400
  30  1300
2 10  1200
  20  1100
  30  1000
3 10   900
  20   800
  30   700

我想知道如何将该输出转换为数据框,它会在其中显示列“c”、“d”,并创建一个包含集成结果的新列?

【问题讨论】:

    标签: python pandas list dataframe


    【解决方案1】:

    我最近根据类似数据创建了一个 DataFrame。

    首先,为复杂列表的每个 c 值创建简单列表。

    c1_vals = [1500, 1400, 1300], etc
    

    使用字典创建 DataFrame,其中 c 值作为键,列表作为值。

    ex_df = pd.DataFrame({'1': c1_vals, '2': c2_vals, '3': c3_vals})
    

    复数数据中的 d 值对应于每个列表的索引位置。

    ex_df['1'][0] represents c:1 d:10
    

    您可以像这样为单个 d 值创建变量。

    c1d10 = ex_df['1'][0]
    

    【讨论】:

    • 如果您的问题是 Pandas DataFrame 不接受您尝试输入 @Rauan_Saturin 的数据类型,我的回答会很有帮助
    • 嗯,我看到了逻辑,这很有意义。但就我而言,我有超过十万行,如果不手动输入所有数据,我真的想不出一种方法来解决你的方法。有什么想法吗?
    • 根据数据的结构方式,您可能会使用 for 循环将值附加到列表中。即对于 c1 中的 val:c1_val.append(val)
    【解决方案2】:

    请尝试:

    df = df.reset_index()
    

    【讨论】:

    • 我得到的输出本身不是“DataFrame”格式
    • 如果是 groupby 对象,请尝试.first()
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-14
    • 2020-01-22
    • 1970-01-01
    • 1970-01-01
    • 2020-05-04
    • 2023-03-31
    • 2015-03-25
    相关资源
    最近更新 更多