Python 创建每列具有多个标题的数据框,并在循环中填充数据框
我想创建一个每列有多个标题的数据框,并用循环中的数据逐行填充数据框。我以前创建过数据帧,但这对于我真正想要做的事情来说似乎非常复杂,我不知道从哪里开始 例如:Python 创建每列具有多个标题的数据框,并在循环中填充数据框,python,pandas,dataframe,indexing,Python,Pandas,Dataframe,Indexing,我想创建一个每列有多个标题的数据框,并用循环中的数据逐行填充数据框。我以前创建过数据帧,但这对于我真正想要做的事情来说似乎非常复杂,我不知道从哪里开始 例如: step = list(range(1,5)) for i in step: time = -2 for j in range(0,5): # Time goes from -2 to 2 one = time*0.5 two = time*0.4
step = list(range(1,5))
for i in step:
time = -2
for j in range(0,5): # Time goes from -2 to 2
one = time*0.5
two = time*0.4
score = one + two
# Code populate dataframe with column time for one and two sub columns,
# and the score for the score column
time += 1
print("step %s " % i)
数据帧的外观图片
您可以在指定索引和列时使用构造函数。重要的一点是使用列:
然后,您可以通过为“按标签快速标量设置”填充值:
df.at['step 1', (-2, 'two')] = 2
df.at['step 3', (0, 'one')] = 5
print(df)
-2 -1 0 1 2
one two one two one two one two one two
time
step 1 NaN 2 NaN NaN NaN NaN NaN NaN NaN NaN
step 2 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
step 3 NaN NaN NaN NaN 5 NaN NaN NaN NaN NaN
step 4 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
虽然jpp已经回答了大部分问题,但我注意到还有另一个“分数”;你想要的专栏
arrays= [['score', -2, -2, -1, -1, 0, 0, 1, 1, 2 ,2, 'score'],
[None, 'one', 'two', 'one', 'two', 'one', 'two', 'one', 'two', 'one', 'two']]
tuples = list(zip(*arrays))
columns = pd.MultiIndex.from_tuples(tuples, names = ['time', None ])
df = pd.DataFrame(index = ['Step 1', 'Step 2', 'Step 3', 'Step 4', 'Step 5'], columns=columns)
df
time score -2 -1 0 1 2
NaN one two one two one two one two one two
Step 1 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
Step 2 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
Step 3 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
Step 4 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
Step 5 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
感觉有点像黑客
arrays= [['score', -2, -2, -1, -1, 0, 0, 1, 1, 2 ,2, 'score'],
[None, 'one', 'two', 'one', 'two', 'one', 'two', 'one', 'two', 'one', 'two']]
tuples = list(zip(*arrays))
columns = pd.MultiIndex.from_tuples(tuples, names = ['time', None ])
df = pd.DataFrame(index = ['Step 1', 'Step 2', 'Step 3', 'Step 4', 'Step 5'], columns=columns)
df
time score -2 -1 0 1 2
NaN one two one two one two one two one two
Step 1 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
Step 2 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
Step 3 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
Step 4 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
Step 5 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN