[英]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.