【问题标题】:print generator array object in python在python中打印生成器数组对象
【发布时间】:2017-08-04 21:18:15
【问题描述】:

我想通过打印查看生成器对象的内容。

我已经对数据框应用了一个函数,这个函数将返回数组作为输出。目前,如果我打印它会显示此消息:

print(df["events"])

0     <generator object count_ones at 0x000001FDF619...
1     <generator object count_ones at 0x000001FDF619...
2     <generator object count_ones at 0x000001FDF619...

事件列数据示例是这样的:[0, 1, 0, 2]

【问题讨论】:

  • 尝试df['events'].apply(list) 它将生成器对象转换为列表。但是那时就没有生成器对象的意义了。 pandas 不能很好地处理这些数据结构。你确定这是你需要的吗?
  • @ayhan 谢谢你的建议。我认为我的功能仍在抱怨。一旦我更改了我的代码,它就会在这行代码'num_bin_str = bin(num)[2:]'中抱怨'TypeError:'Series'对象不能被解释为整数'

标签: python pandas printing


【解决方案1】:

我在下面重新创建了您的场景(我认为)

r = (i for i in range(3))
s = pd.Series([r], [1, 2, 3])
s

1    <generator object <genexpr> at 0x11c06ff10>
2    <generator object <genexpr> at 0x11c06ff10>
3    <generator object <genexpr> at 0x11c06ff10>
dtype: object

这是个坏消息。注意at 0x11c06ff10。这告诉我我有 3 个指向同一个生成器对象的指针。这意味着如果我尝试apply(list),我将获得第一个系列元素的列表(可能),当我到达第二个元素时,生成器将被使用。

s.apply(list)

1    [0, 1, 2]
2           []
3           []
dtype: object

我说可能是因为它本可以在申请之前用完

r = (i for i in range(3))
s = pd.Series([r], [1, 2, 3])
list(r);

s.apply(list)

1    []
2    []
3    []
dtype: object

我什至不确定你到底想做什么。假设您想要一系列列表。然后解决您的问题首先从您如何创建系列开始。

r = [i for i in range(3)]
s = pd.Series([r], [1, 2, 3])
s

1    [0, 1, 2]
2    [0, 1, 2]
3    [0, 1, 2]
dtype: object

在我的示例中,括号 [] 与括号 () 有很大的不同。 [] 表示返回列表的列表理解。 () 返回一个生成器。 \耸肩,我不知道为什么。就是这样。

你从这里去哪里?再问一个更详细的问题,了解您要构建什么样的结构。

【讨论】:

    猜你喜欢
    • 2020-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-19
    相关资源
    最近更新 更多