首页 > 解决方案 > Python:如何从日期时间列中提取的月份列中获取模式?

问题描述

我是新来的!做我的第一个 Python 项目。:)
我的任务是:

  1. 将 df['Start Time'] 从字符串转换为日期时间
  2. 从 df['Start Time'] 创建一个月列
  3. 获取当月的模式。

我使用了几种不同的方法来完成所有 3 个步骤,但尝试获取模式总是返回TypeError: tuple indices must be integers or slices, not str。即使我尝试将“元组”转换为列表或 NumPy 数组,也会发生这种情况。

我尝试从开始时间提取月份的方法:

df['extracted_month'] = pd.DatetimeIndex(df['Start Time']).month
df['extracted_month'] = np.asarray(df['extracted_month'])
df['extracted_month'] = df['Start Time'].dt.month

我尝试获取模式的方法:

print(df['extracted_month'].mode())
print(df['extracted_month'].mode()[0])
print(stat.mode(df['extracted_month']))

尝试使用df.columns.get_loc("extracted_month")获取索引,然后在模式代码中替换它会给我同样的错误(TypeError: tuple indices must be integers or slices, not str)。

我想我应该将 df['extracted_month'] 转换成不同的……东西。它是什么?

注意:我的extracted_month 列是一个字符串,但您仍然应该能够从字符串变量中获取模式!我不改变它,那将是放弃。

编辑:使用以下代码仍然会导致相同的错误

extracted_month = pd.Index(df['extracted_month'])
print(extracted_month.value_counts())

标签: python-3.x

解决方案


该错误可能是由您创建数据框的方式引起的。如果数据框是在另一个函数中创建的,并且该函数与数据框一起返回其他内容,但您将其分配给变量 df,则 df 将是一个包含实际数据框的元组,而不是数据框本身。


推荐阅读