【问题标题】:Unable to convert bigdata tuple to dataframe using pandas无法使用熊猫将大数据元组转换为数据框
【发布时间】:2021-09-30 08:18:15
【问题描述】:

我正在处理具有超过百万行和 20 列的大数据。虽然我的代码在下面给出的示例元组中运行良好,但在大数据中却失败了

ata = [('Facebook', 750, True),
        ('Alphabet', 1100, True),
        ('Amazon', 1700, True),
        ('Apple', 2100, False),
        ('Microsoft', 1750, False)]

我正在尝试将它们转换为如下所示的数据框

df = pd.DataFrame(testdata, columns=cols)

虽然上面的代码适用于示例数据,但当我对真实数据执行相同操作时,我会收到一条错误消息,如下所示

ValueError:必须通过二维输入。形状=(1, 10116838, 20)

虽然我知道真实数据中有10116838 行和20 列,但我不知道它从哪里选择1 作为第一维。是指索引吗?

可以帮我解决这个问题

【问题讨论】:

    标签: python pandas dataframe numpy tuples


    【解决方案1】:

    你或许应该测试一下pd.DataFrame.from_records

    pd.DataFrame.from_records(testdata, columns=cols)
    

    输出:

               A     B      C
    0   Facebook   750   True
    1   Alphabet  1100   True
    2     Amazon  1700   True
    3      Apple  2100  False
    4  Microsoft  1750  False
    

    另一种可能性很可能是您的输入无效,并且存在具有更少/更多值的元组。您应该尝试平分您的大数据以找出失败的示例。

    编辑:缺少数据的示例

    testdata = [('Facebook', 750, True),
                ('Alphabet',),
                ('Amazon', 1700, True),
                ('Apple', 2100),
                ('Microsoft', 1750, False)]
    
    pd.DataFrame.from_records(testdata, columns=list('ABC'))
    

    输出:

               A       B      C
    0   Facebook   750.0   True
    1   Alphabet     NaN   None
    2     Amazon  1700.0   True
    3      Apple  2100.0   None
    4  Microsoft  1750.0  False
    

    【讨论】:

    • 谢谢,赞成..但是 from-records 不起作用,因为它只返回列名
    • tuples with less/more values.. 是什么意思。是的,我的元组可能缺少某些行/列的值/NA
    • 我提供了一个缺少数据的示例,它应该可以正常工作,确保您有元组(即,如果单个值使用(value,),而不是(value)
    • 当我在 jupyter 单元格中输入testdf 以显示我的元组时,它返回如下尺寸[10116838 rows x 20 columns],)
    • 但只有当我尝试将它们转换为数据框时,它才会抛出形状错误(1, 10116838, 20)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-08
    • 1970-01-01
    • 2023-03-30
    • 2017-11-22
    • 2014-08-02
    • 2019-04-04
    • 2021-08-21
    相关资源
    最近更新 更多