首页 > 解决方案 > Python Pandas 拆分字符串并将余数存储在新行中

问题描述

我有一个 pandas 数据框,其中每两天进行一次观察。“日期”列中的每个值都描述了两天的范围(例如 2020-02-22 到 2020-02-23)。

df_day.head()

我想将这些 Date 值分成单独的日子,每一天都有一行。我得到的最接近的是做newdf = df_day.set_index(df_day.columns.drop('Date',1).tolist()).Date.str.split(' to ', expand=True).stack().reset_index().loc[:, df_day.columns]

这里的问题是新的日期值以 NaN 形式返回。有没有办法实现按天分解的数据?

标签: pythonpandas

解决方案


我可能不明白,但根据图像,它是每行一个日期,只是标签很差——我会操纵索引字符串,如果我不能这样做,我会创建一个新的日期列,或者新的df w/ clean date 并合并它。

您应该能够使用 lambda 删除前 14 个字符——在 index.html 中留下第二个列出的日期。
我无法重现这个,所以请耐心等待。

df.rename(index=lambda s: s[14:]) 
#should remove first 14 characters from each row label.
#leaving just '2020-02-23' in row 2. 

#If you must skip row 1, idx = df.index[1:]
#or df.iloc[1:].rename(index=lambda s: s[1:]) 

否则,我会用新的日期时间索引替换它。

didx = pd.DatetimeIndex(start ='2000-01-10', freq ='D',end='2020-02-26')
#Make sure same length as df
df.set_index(didx) 

#Or
#df['new_date'] = didx.values
#df.set_index('new_date').drop(columns=['Date'])

#Or
#df.append(didx,axis=1) #might need ignore_index=True

推荐阅读