【问题标题】:Attribute error even after adding the enumerate即使添加枚举后属性错误
【发布时间】:2022-01-10 15:32:03
【问题描述】:

我不断收到 Attributeerror,例如 'tuple' 对象没有属性 'split'。 起初我没有在这段代码中枚举,我得到属性错误,说'int'对象没有属性'split'。所以添加了 te 枚举引用 this question. 但我还是会遇到同样的错误。

enterreleased_date = []
released_country = []
released_year = []
for i in enumerate(df['released']):
    date = i.split("(")[0]
    country = i.split("(")[1].replace(')','')
    released_date.append(date)
    released_country.append(country)

df['released_country'] = released_country
df['released_date'] = released_date
df['released_date'] = pd.to_datetime(df['released_date'])

df['released_year'] = df['released_date'].dt.year
df['released_month'] = df['released_date'].dt.month

#drop the unneccessary columns --yearcorrect was created by accident so we'll delete that as well
df.drop(['year','released','released_date','yearcorrect'], axis=1, inplace=True)
df['logbudget'] = np.log(df['budget'])
df['loggross'] = np.log(df['gross'])
df.head(3) code here

【问题讨论】:

  • enumerate 根据原始迭代中的索引返回两个元素的元组。即list(enumerate(['a', 'b', 'c'])) == [(0, 'a'), (1, 'b'), (2, 'c')] 好像你不需要它,因为你没有引用索引。

标签: python jupyter-notebook attributeerror


【解决方案1】:

当你调用这个时:

for i in enumerate(df['released']):

enumerate(x) 返回一个包含 2 个元素的元组对象。第一个 x 中的样本数量 i 和第二个 x 本身中的 i-th 元素。那么i 得到的是每次迭代的两个元素的元组。如果你使用 .split 作为字符串,你需要写:

for i, string in enumerate(df['released']):

所以现在您可以在每次迭代的元组中获取两个元素。然后你可以使用split() 为:string.split()

试试:

for i in enumerate(df['released']):
    print(i)

还有:

for i, string in enumerate(df['released']):
        print(i)
        print(string )

看看区别。

已编辑:正如@flakes 建议的那样,您似乎实际上不需要使用枚举。因为python中的for循环比其他语言更聪明,它们迭代数组/列表/等中的元素,不需要数字来帮助它们。 for elem in df['released']: 就足够了。

【讨论】:

  • 但是当我在 df['released'] 中为 elem 编码时:它得到错误...相同的属性错误说 'int' 没有属性拆分,而不是 'tuple'。
  • @ennswty 我不知道我是否看不到您的数据框。我假设 df['released'] 中的值是字符串,因为 .split 是一个字符串方法。你想做什么?我不明白试图通过")" 夹板整数。
  • @ennswty 提供几行数据框或列作为示例,看看它是怎样的。
  • for i in enumerate(df['released']): date = string.split("(")[0] country = string.split("(")[1].replace( ')','')released_date.append(date)released_country.append(country) 这是你的意思吗?因为这个有效。
  • -@RobertoT 对不起,我不知道如何在评论中添加代码,所以我刚刚发布了这个帖子的答案来回答你的问题
猜你喜欢
  • 2020-05-11
  • 2012-02-16
  • 1970-01-01
  • 1970-01-01
  • 2022-12-14
  • 1970-01-01
  • 1970-01-01
  • 2010-12-26
  • 1970-01-01
相关资源
最近更新 更多