首页 > 解决方案 > 附加列并一个接一个地放置

问题描述

我有以下数据框:

a1 p1 a2 p2 a3 p3 ...
1 2 3 4 5 6 ...
7 8 9 10 11 12 ...

而且,我想创建一个这样的数据框:

一个 p
1 2
7 8
3 4
9 10
5 6
11 12
... ...

标签: python-3.xpandas

解决方案


你需要这样的东西吗?

 import pandas as pd
 import random
    
 a = [random.randint(1,100) for i in range(178) ]
 b = [random.randint(1,100) for i in range(178) ]

 #Original DF
 df = pd.DataFrame({"0": a, "1": b})
    
    
 #New DF
 cf = pd.DataFrame()
 cf["Actual Value"] = df["0"]
 cf["Predicted Value"] = df["1"]
 cf["Error Value"] = df["0"] - df["1"]
 cf["Id"] = ["Bin" + str(i + 1) for i in range(178) ]

我误解了你的前一个。

这应该适合你:

import pandas as pd
import random


#Original DF
d = {}
for i in range(int(178)):
    a = [random.randint(1,100) for i in range(10) ]
    b = [random.randint(1,100) for i in range(10) ]
    d["Bin " + str(i+1)] = pd.DataFrame({"0": a, "1": b})

con = pd.concat(d, axis=1)

colum = []
for i in range(178*2):
    if i%2 == 0:
        colum.append("0")
    else:
        colum.append("1")

con.columns = colum


#New DF
result = []
count = 0
for i in range(0,178*2,2):
    a = con.iloc[:,[i,i+1]]
    a["Error"] = a["0"] - a["1"]
    a["Bucked"] = "Bin: " + str(count)
    result.append(a)
    count = count + 1

result = pd.concat(result)
result

结果图片:


推荐阅读