我想制作一個包含 3 列的資料框。我有三個不同的串列,其中包含需要按特定順序出現在資料框中的值,因此我想遍歷串列以組合它們并創建資料框。
- 串列 F,包含 9 個值
- 串列 P,包含 3 個值
- 串列 A,包含 3 個值
最終的資料框將在 Excel 中匯出,應如下所示:|F |P |A | |----|----|----| |F(0)|P(0)|A(0)| |F(1)|P(0)|A(1)| |F(2)|P(0)|A(2)| |F(3)|P(1)|A(0)| |F(4)|P(1)|A(1)| |F(5)|P(1)|A(2)| |F(6)|P(2)|A(0)| |F(7)|P(2)|A(1)| |F(8)|P(2)|A(2)|
為了實作這一點,我想首先創建一個包含這些值的串列并將其拆分到資料框中。
我試過這個來獲取串列:
df_test3 = []
for f in F:
df_test3.append(f)
for p in P:
for a in D:
df_test3.append(p)
df_test3.append(a)
串列 P 和 A 的順序正確,但我無法將它與外回圈 F 匹配。我知道我必須用 break 做一些事情才能回傳到外回圈,但我不知道怎么做。
它現在回傳:
list = [F0, P0, A0, P0, A1, P0, A2, P1, A0, etc.]
并在內回圈完成后繼續到 F 的下一個值。如何在串列中以正確的順序獲取所有值?還是我以錯誤的方式處理這個問題,我應該立即創建資料框嗎?
uj5u.com熱心網友回復:
嘗試這個...
F = [1,2,3,4,5,6,7,8,9]
P = [11,22,33]
A = [111,222,333]
P1 = []
num1 = int(len(F)/len(P))
for p in P:
P1 = P1 [p]*num1
num2 = int(len(F)/len(A))
A1 = A*num2
df_result = pd.DataFrame({"F":F,"P":P1,"A":A1})
# Output of df_result...
F P A
0 1 11 111
1 2 11 222
2 3 11 333
3 4 22 111
4 5 22 222
5 6 22 333
6 7 33 111
7 8 33 222
8 9 33 333
希望這可以幫助...
uj5u.com熱心網友回復:
您可以使用 itertools 中的回圈。
例如:
from itertools import cycle
F =[ 0,1,2,3,4,5,6,7,8]
P = [0,1,2]
A = [0,1,2]
df_test3 = []
zip_list = zip(F, cycle(P),cycle(A))
print(list(zip_list))
結果是:[(0, 0, 0), (1, 1, 1), (2, 2, 2), (3, 0, 0), (4, 1, 1), (5, 2, 2), (6, 0, 0), (7, 1, 1), (8, 2, 2)]
你可以通過它。也許它可以幫助您找到解決方案。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/510409.html
下一篇:同時回圈遍歷多個串列?
