Skip to main content
 首页 » 编程设计

python之从列表创建数据框

2025年05月04日15mate10pro

我想从以下列表中创建一个数据框:

list1 = [1, 1, 1, 0, 4, 3, 10, 6, 16, 18, 39, 284, 3857, 3924, 334, 43, 14, 4, 3, 3] 
list2 = ['-150< n <-138', '-137< n <-127', '-126< n <-115', '-114< n <-104', '-103< n <-92', '-91< n <-81', '-80< n <-69', '-68< n <-58', '-57< n <-46', '-45< n <-35', '-34< n <-23', '-22< n <-12', '-11< n <0', '0< n <11', '12< n <22', '23< n <34', '35< n <45', '46< n <57', '58< n <68', '69< n <80'] 

我试过了,还是不行

my_dict = {} 
for i in range(len(temp)): 
    my_dict[temp2[i]] = temp[i] 
 
df1 = pd.DataFrame(data=my_dict) 

ValueError:如果使用所有标量值,则必须传递索引

我想了解为什么这是错误的,我想创建一个数据框,其中列是字符串,值是数字。

提前致谢

请您参考如下方法:

看来需要:

df = pd.DataFrame([list1], columns=list2) 
print (df) 
   -150< n <-138  -137< n <-127  -126< n <-115  -114< n <-104  -103< n <-92  \ 
0              1              1              1              0             4    
 
   -91< n <-81  -80< n <-69  -68< n <-58  -57< n <-46  -45< n <-35  \ 
0            3           10            6           16           18    
 
   -34< n <-23  -22< n <-12  -11< n <0  0< n <11  12< n <22  23< n <34  \ 
0           39          284       3857      3924        334         43    
 
   35< n <45  46< n <57  58< n <68  69< n <80   
0         14          4          3          3   

但是如果需要带值的索引使用Series/DataFrame构造器:

s = pd.Series(list1, index=list2) 
print (s) 
-150< n <-138       1 
-137< n <-127       1 
-126< n <-115       1 
-114< n <-104       0 
-103< n <-92        4 
-91< n <-81         3 
-80< n <-69        10 
-68< n <-58         6 
-57< n <-46        16 
-45< n <-35        18 
-34< n <-23        39 
-22< n <-12       284 
-11< n <0        3857 
0< n <11         3924 
12< n <22         334 
23< n <34          43 
35< n <45          14 
46< n <57           4 
58< n <68           3 
69< n <80           3 
dtype: int64 

df = pd.DataFrame(list1, index=list2, columns=['a']) 
print (df) 
                  a 
-150< n <-138     1 
-137< n <-127     1 
-126< n <-115     1 
-114< n <-104     0 
-103< n <-92      4 
-91< n <-81       3 
-80< n <-69      10 
-68< n <-58       6 
-57< n <-46      16 
-45< n <-35      18 
-34< n <-23      39 
-22< n <-12     284 
-11< n <0      3857 
0< n <11       3924 
12< n <22       334 
23< n <34        43 
35< n <45        14 
46< n <57         4 
58< n <68         3 
69< n <80         3