我明白了:
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
中的元素。
有什么提示吗?
答案 0 :(得分:2)
这应该做到:
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
答案 1 :(得分:1)
进入第二个循环时,您正在覆盖值。 您正在做的是:
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
哪种解决方案描述得here