当前位置: 代码迷 >> python >> 使用双循环创建DataFrame
  详细解决方案

使用双循环创建DataFrame

热度:29   发布时间:2023-07-14 09:49:13.0

我懂了:

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

有一个很好的解决方案

  相关解决方案