您可以使用
pivot重塑-
NaN按列输入缺失值
time,然后
unstack按
reset_index和
sort_values:
import pandas as pddf = pd.Dataframe({'date': {0: 20100201, 1: 20100201, 2: 20100201, 3: 20100201, 4: 20100202, 5: 20100202, 6: 20100202, 7: 20100202, 8: 20100203, 9: 20100203, 10: 20100204}, 'time': {0: 0, 1: 6, 2: 12, 3: 18, 4: 0, 5: 6, 6: 12, 7: 18, 8: 0, 9: 18, 10: 6}, 'value': {0: 1, 1: 2, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 11, 10: 12}})print (df) date time value0 20100201 0 11 20100201 6 22 20100201 12 33 20100201 18 44 20100202 0 55 20100202 6 66 20100202 12 77 20100202 18 88 20100203 0 99 20100203 18 1110 20100204 6 12print (df.pivot(index='date', columns='time', values='value') .unstack() .reset_index(name='value') .sort_values('date')) time date value0 0 20100201 1.04 6 20100201 2.08 12 20100201 3.012 18 20100201 4.01 0 20100202 5.05 6 20100202 6.09 12 20100202 7.013 18 20100202 8.02 0 20100203 9.06 6 20100203 NaN10 12 20100203 NaN14 18 20100203 11.03 0 20100204 NaN7 6 20100204 12.011 12 20100204 NaN15 18 20100204 NaNreset_index如果您需要
index这样的服务,也许您可以再次:
print (df.pivot(index='date', columns='time', values='value') .unstack() .reset_index(name='value') .sort_values('date') .reset_index(drop=True)) time date value0 0 20100201 1.01 6 20100201 2.02 12 20100201 3.03 18 20100201 4.04 0 20100202 5.05 6 20100202 6.06 12 20100202 7.07 18 20100202 8.08 0 20100203 9.09 6 20100203 NaN10 12 20100203 NaN11 18 20100203 11.012 0 20100204 NaN13 6 20100204 12.014 12 20100204 NaN15 18 20100204 NaN


