簡體   English   中英

使用雙循環創建DataFrame

[英]Creating DataFrame with a double loop

我懂了:

columns = ['a','b','c']
data = [1,2,3],[3,4],[4,5,5]
df = pandas.DataFrame({i:pandas.Series(j) for i in columns for j in data})
print(df)

輸出:

   a  b  c
0  4  4  4
1  5  5  5
2  5  5  5

我需要:

   a  b  c
0  1  3  4
1  2  4  5
2  3     5

我真的不明白為什么這不起作用。 我知道我正在以正確的方式訪問data中的元素。

有小費嗎?

應該這樣做:

import pandas as pd

data = [[1, 2, 3], [3, 4], [4, 5, 5]]
df = pd.DataFrame(data).transpose()
df.columns = columns

輸出:

    a    b    c
0  1.0  3.0  4.0
1  2.0  4.0  5.0
2  3.0  NaN  5.0

當您進入第二個循環時,您正在覆蓋值。 您正在做的是:

import pandas


columns = ['a','b','c']
data = [1,2,3],[3,4],[4,5,5]

myDict = {}
for i in columns:
    for j in data:
        myDict[i]=j
print(pandas.DataFrame(myDict))

這就是為什么您的數據被覆蓋的原因。 您要做的顯然是:

myDict = {}
for i,key in enumerate(columns):
    myDict[key] = data[i]

但是,這將導致:

raise ValueError('arrays must all be same length')
ValueError: arrays must all be same length

在這里有一個很好的解決方案

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM