【问题标题】:Pandas melt dataframe in terms of date time and fill all values NaNPandas 根据日期时间融化数据框并填充所有值 NaN
【发布时间】:2023-04-06 12:45:01
【问题描述】:

我有一个数据框,包括从“1/22/20”到“2/22/20”的所有国家和日期时间。

这是我的数据框列,如下所示。

Country 1/22/20 1/23/20 1/24/20 1/25/20 1/26/20 1/27/20 1/28/20 1/29/20 1/30/20...

我尝试融合数据框以获取日期时间和国家/地区等方面的值

US 1/25/20 28

但所有值都定义为NaN

Australia   2020-01-22  NaN

我该如何解决?

这是我的代码 sn-p

def meltDataFrame(df,id_vars,value_vars,var_name,value_name):
    return pd.melt(df,
        id_vars= id_vars,
        value_vars = value_vars,
        var_name= var_name,
        value_name= value_name)

data_df_melt = meltDataFrame(data_df.reset_index(),
        ['Country'],pd.date_range('1/22/20', '3/18/20', freq='D'),'Date','Total_Count')

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    问题是列名不是日期时间。

    因此,将所有没有 first 的列名称转换为日期时间:

    df.columns = df.columns[:1].tolist() + pd.to_datetime(df.columns[1:]).tolist()
    

    然后融化。

    示例

    print (df)
         Country  1/22/20  1/23/20  1/24/20
    0  Australia       11       42       53
    
    df.columns = df.columns[:1].tolist() + pd.to_datetime(df.columns[1:]).tolist()
    print (df)
         Country  2020-01-22 00:00:00  2020-01-23 00:00:00  2020-01-24 00:00:00
    0  Australia                   11                   42                   53
    

    【讨论】:

    • 当我绘制绘图时,日期时间显示为 2020-01-22T00:00:00.000000000。怎么才能只有2020-01-22
    • @TonyBrand 用df.columns = df.columns[:1].tolist() + pd.to_datetime(df.columns[1:]).date.tolist() 更改我的解决方案,然后使用data_df_melt = meltDataFrame(data_df.reset_index(), ['Country'],pd.date_range('1/22/20', '3/18/20', freq='D').date ,'Date','Total_Count')
    • @TonyBrand - 用于将日期时间转换为列和meltDataFrame 函数中的日期
    • 我使用此代码data_df_melt = meltDataFrame(data_df.reset_index(), ['Country'],pd.date_range('1/22/20', '3/18/20', freq='D').date ,'Date','Total_Count'),但它不起作用。我产生NaN
    • 我忘了删除日期格式代码。删除后,问题就消失了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-27
    • 2022-01-12
    • 1970-01-01
    • 2020-09-23
    • 1970-01-01
    • 2014-11-05
    相关资源
    最近更新 更多