Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 创建每列具有多个标题的数据框,并在循环中填充数据框_Python_Pandas_Dataframe_Indexing - Fatal编程技术网

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
您可以在指定
索引
时使用构造函数。重要的一点是使用列:

然后,您可以通过为“按标签快速标量设置”填充值:

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

虽然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
感觉有点像黑客