将一列与另一列垂直组合,并填充Panda中的其他列值



如果我在以下数据帧中有一个异常列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

第一个想法是renameratiomelt:之前

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

另一种是在melt:之后将datetime从列替换为date

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

最新更新