如果2019/2/1
以下数据框中的列异常:
date,type,ratio,2019/2/1
2019/1/1,food,0.4,0.3
2019/1/1,vegetables,0.2,0.6
2019/1/1,toy,0.1,0.5
我怎么能垂直追加2019/2/1
到ratio
?
预期结果将如下所示:
date type ratio
0 2019/1/1 food 0.4
1 2019/1/1 vegetables 0.2
2 2019/1/1 toy 0.1
3 2019/2/1 food 0.3
4 2019/2/1 vegetables 0.6
5 2019/2/1 toy 0.5
第一个想法是在前面的rename
列:ratio
melt
df1 = (df.rename(columns={'ratio':'2019/1/1'})
.drop('date', 1)
.melt('type',value_name='ratio', var_name='date'))
print (df1)
type date ratio
0 food 2019/1/1 0.4
1 vegetables 2019/1/1 0.2
2 toy 2019/1/1 0.1
3 food 2019/2/1 0.3
4 vegetables 2019/2/1 0.6
5 toy 2019/2/1 0.5
另一个是在之后的datetime
列之间替换s :date
melt
df['date'] = pd.to_datetime(df['date'])
df2 = df.melt(['date','type'],value_name='ratio')
df2['date'] = pd.to_datetime(df2.pop('variable'), errors='coerce').fillna(df2['date'])
print (df2)
date type ratio
0 2019-01-01 food 0.4
1 2019-01-01 vegetables 0.2
2 2019-01-01 toy 0.1
3 2019-02-01 food 0.3
4 2019-02-01 vegetables 0.6
5 2019-02-01 toy 0.5
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句