简体   繁体   English

Pandas 根据日期时间融化数据框并填充所有值 NaN

[英]Pandas melt dataframe in terms of date time and fill all values NaN

I have a dataframe including all countries and datetime ranging from "1/22/20" to "2/22/20".我有一个数据框,包括从“1/22/20”到“2/22/20”的所有国家和日期时间。

Here is my dataframe Column shown below.这是我的数据框列,如下所示。

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...

I try to melt dataframe to get values in terms of datetime and country like我尝试融化数据框以获取日期时间和国家/地区方面的值

US 1/25/20 28

but all values defined as NaN但所有值都定义为NaN

Australia   2020-01-22  NaN

How can I fix it?我该如何解决?

Here is my code snippet这是我的代码片段

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')

Problem is columns names are not datetimes.问题是列名不是日期时间。

So convert all columns names without first to datetimes:因此,将所有没有 first 的列名称转换为日期时间:

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

And then melt.然后融化。

Sample :样品

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM