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