【发布时间】:2022-01-04 15:32:54
【问题描述】:
此代码应根据 df['a'] 中的值在“cat”列表中的位置生成一个名为“cat_list”的列表。如果 df['a'] 包含 'cat' 列表中不存在的值,则应将 0 附加到 'cat_list'。 'cat_list' 的长度应该是 6,但我不确定为什么它的长度是 18。
import pandas as pd
d = {'a': [0.1, 0.2,0.3,0.4,0.5,0.6], 'b': [0.6, 0.8,0.3,0.4,0.1,0.1],
'c': [0.7, 0.3,0.9,0.4,1.0,0.2],'d': [1,0,0,1,0,1]}
df = pd.DataFrame(data=d)
cat=[0.6,0.3,0.1]
cat_list=[]
for i in df.a:
for j in cat:
if i == j:
cat_list.append(cat.index(j))
else:
cat_list.append(0)
print(cat_list) # should print [2,0,1,0,0,0]
print(len(cat_list)) # should print 6, not 18
【问题讨论】:
-
在长度方面,你有一个超过 6 个元素的循环超过一个超过 3 个元素的循环。每次运行的内部循环都附加到 cat_list 中,因此它将始终是 18 个元素,除非您更改附加方式
-
纸笔调试应该说实话
-
提示:你需要一个显式的 for 循环而不是两个
-
对不起,如果您的预期结果是
[2,0,1,0,0,0]和[2,-1,1,-1,-1,0]或[2,nan,1,nan,nan,0],这是否有意义。如何区分 0(代表 0.1)和 0(代表无)?
标签: python pandas list dataframe