我试图将尺寸为52x40的2d数组制作为52x40的数据帧,但只有10个列标题。在下面的示例中,假设一个尺寸为52x30的数据帧具有10列标题,每个标题包含3列。
我一直在尝试看pandas文档以及其他类似的问题修复程序,这些修复程序虽然不尽相同,但仍然尝试过并且失败了。
任何人都知道如何执行此操作吗? 现在,我能做的最接近的实现是接收一个52x40的熊猫数据帧,但列标题是同一天的4次,然后第二天重复4次,然后下一个重复……直到完成10天。 即:总共40列。
final_logic_table = pd.DataFrame(final_logic_table, index=[nurseData.importShift.columns], columns=[dates]);
final_logic_table.set_index(numpy.unique(dates));
final_logic_table.sort_index(inplace=True);
这就是我要实现的目标:
] 1
答案 0 :(得分:1)
我认为需要MultiIndex
创建的MultiIndex.from_product
:
np.random.seed(1256)
dates = pd.date_range('2018-01-12', periods=10)
c= pd.MultiIndex.from_product([dates, ['Morning','Afternoon','Night']])
df = pd.DataFrame(np.random.randint(10, size=(52,30)), columns=c)
print (df.head())
2018-01-12 2018-01-13 2018-01-14 \
Morning Afternoon Night Morning Afternoon Night Morning Afternoon
0 1 5 8 8 9 3 6 3
1 0 7 2 8 2 4 8 3
2 6 9 4 2 8 7 1 6
3 1 8 9 1 6 3 4 9
4 7 8 7 0 6 3 0 2
2018-01-15 ... 2018-01-18 2018-01-19 2018-01-20 \
Night Morning ... Night Morning Afternoon Night Morning
0 0 6 ... 4 9 4 6 1
1 5 5 ... 2 4 7 4 0
2 3 2 ... 3 2 4 1 5
3 1 3 ... 0 2 1 3 7
4 0 7 ... 8 2 1 5 0
2018-01-21
Afternoon Night Morning Afternoon Night
0 7 7 5 8 3
1 4 9 6 0 4
2 4 9 5 2 4
3 4 8 1 0 2
4 3 9 1 7 1
[5 rows x 30 columns]