简体   繁体   English

从列表创建数据框

[英]Creating a dataframe from lists

I would like to create a data frame from the following lists: 我想从以下列表创建一个数据框:

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']

I tried this but it does not work 我尝试了这个,但是没有用

my_dict = {}
for i in range(len(temp)):
    my_dict[temp2[i]] = temp[i]

df1 = pd.DataFrame(data=my_dict)

ValueError: If using all scalar values, you must pass an index ValueError:如果使用所有标量值,则必须传递索引

I want to understand why this wrong and I want to create a data frame with the columns being the string and the values being the numbers. 我想了解为什么会出错,我想创建一个数据框,其中列为字符串,值为数字。

Thank you in advance 先感谢您

It seems need: 似乎需要:

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  

But if need index with values use Series/DataFrame contructor: 但是,如果需要带有值的索引,请使用Series/DataFrame构造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

Did you try this: 您是否尝试过:

df = pd.DataFrame({'col_string': list2, 'col_value': list1})
df
    col_string  col_value
0   -150< n <-138   1
1   -137< n <-127   1
2   -126< n <-115   1
3   -114< n <-104   0
4   -103< n <-92    4
5   -91< n <-81     3
6   -80< n <-69     10
7   -68< n <-58     6
8   -57< n <-46     16
9   -45< n <-35     18
10  -34< n <-23     39
11  -22< n <-12     284
12  -11< n <0       3857
13   0< n <11       3924
14   12< n <22      334
15   23< n <34      43
16   35< n <45      14
17   46< n <57      4
18   58< n <68      3
19   69< n <80      3

Since you are using dict in your own solution try something like Series ? 由于您在自己的解决方案中使用dict,因此请尝试使用Series

pd.Series(dict(zip(list2,list1))).to_frame().reset_index()
Out[1502]: 
            index     0
0    -103< n <-92     4
1   -114< n <-104     0
2       -11< n <0  3857
3   -126< n <-115     1
4   -137< n <-127     1
5   -150< n <-138     1
6     -22< n <-12   284
7     -34< n <-23    39
8     -45< n <-35    18
9     -57< n <-46    16
10    -68< n <-58     6
11    -80< n <-69    10
12    -91< n <-81     3
13       0< n <11  3924
14      12< n <22   334
15      23< n <34    43
16      35< n <45    14
17      46< n <57     4
18      58< n <68     3
19      69< n <80     3

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM