【问题标题】:same object for same values in pands data frame熊猫数据框中相同值的相同对象
【发布时间】:2020-05-15 19:07:12
【问题描述】:

我有一个熊猫数据框:df[Country, Date, Infection, Average]

我有一个类 Date,其中年月日作为实例变量。

要求同一日期,数据结构中只能存在一个对象(实例)。

这可能吗。我该怎么做?

输出: 数据框中将有一列包含 Date 类的对象。

               Country          Date  Infection  Average Date_Object
0      Afghanistan,AFG  Dec 31, 2019        0.0    -89.0  Same
1      Afghanistan,AFG   Jan 1, 2020        0.0    -88.0
2      Afghanistan,AFG   Jan 2, 2020        0.0    -87.0
3      Afghanistan,AFG   Jan 3, 2020        0.0    -86.0
4      Afghanistan,AFG   Jan 4, 2020        0.0    -85.0
5      Afghanistan,AFG  Dec 31, 2019        0.0    -89.0  Same

像这里一样,日期是 2019 年 12 月 31 日。所以对象也应该是一样的。

日期类:

import datetime
class Date:
    def __init__(self, date):
        self.date = datetime.datetime.strptime(date, "%b %d, %Y")
        self.year = self.date.year
        self.month = self.date.month
        self.day = self.date.day

【问题讨论】:

  • 添加示例和预期输出
  • 编辑输出。

标签: python python-3.x pandas dataframe class


【解决方案1】:

对于每个日期,您可以使用日期作为键将对象存储在字典中。在将对象添加到您的 pandas 数据框时,您可以简单地编写一个函数来创建和存储尚未创建的 Date 对象,或者从字典中获取现有的 Date 对象,从而避免每个日期创建多个对象。

类似这样的:

dates = {}
def get_date_object(date):
     if date in dates:
          date_obj = dates[date]
     else:
          date_obj = Date(date)
          dates[date] = date_obj
     return date_obj

然后您可以像这样修改数据框:

df.loc[:, 'Date_Object'] = [get_date_object(date) for date in df.loc[:, 'Date']]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-28
    • 1970-01-01
    • 2018-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多