【问题标题】:Creating new df with count of variable from other df使用其他 df 的变量计数创建新的 df
【发布时间】:2019-04-26 09:52:11
【问题描述】:

我有一个包含一列“完整日期”的简单数据框。

我想在每一列中创建一个新的数据框,然后创建另一个名为“计数”的列,用于记录当天有多少次输入到我的旧数据框中。所以这个数据sn-p会变成:

【问题讨论】:

  • 您能以我不必手动输入的格式共享数据帧吗?
  • 请分享您的两个数据框和您的代码的虚拟数据版本

标签: python pandas dataframe pandas-groupby


【解决方案1】:

使用 -

df['full dates'].value_counts()

对于您的用例(如果就这么简单),您可以将每个日期视为一个分类变量。

这将产生按最高计数排序(降序)的输出。使用sort=False参数保持原顺序

如果您正在寻找基于date 的更简单的解决方案,请首先使用pd.to_datetime() 解析您的列 -

df['full dates'] = pd.to_datetime(df['full dates'], format='%m/%d/%y')

然后使用pd.Grouper() 分组日期以获取每日日期计数 -

df.groupby(pd.Grouper(key='full dates', freq='D')).count()

【讨论】:

  • 谢谢,我收到此错误“NameError: name 'Grouper' is not defined' with the last grouper line...
  • @GrahamStreich 你需要使用pd.Grouper 请检查更新的答案
  • @GrahamStreich value_counts() 不适合你吗?
  • 您知道如何对“完整日期”变量进行排序,以便按时间排序吗?谢谢
  • 使用pd.to_datetime 转换到日期后,使用df = df.sort_values(by=['fill dates'], ascending=True)
【解决方案2】:

最后,这成功了:

df = dates_cleaned.sort_values(by=['full dates'], ascending=True)

df = pd.DataFrame(df['full dates'].value_counts().reset_index())

df = df.sort_values(by=['index'], ascending=True)

df = df.rename(columns={'index': 'full dates', 'full dates': 'count'})

【讨论】:

    猜你喜欢
    • 2023-01-23
    • 2020-10-28
    • 1970-01-01
    • 2021-01-04
    • 2019-03-18
    • 2021-05-12
    • 2023-01-30
    • 2022-11-04
    • 1970-01-01
    相关资源
    最近更新 更多