gpt4 book ai didi

python:从 Pandas 中的数据框生成的列表比数据框列长得多

转载 作者:行者123 更新时间:2023-12-05 04:41:10 24 4
gpt4 key购买 nike

此代码应生成一个名为“cat_list”的列表,其中包含根据 df['a'] 中的值在“cat”列表中的位置。如果 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

最佳答案

在长度方面,你有一个超过 3 个元素的循环,里面有一个超过 6 个元素的循环。这将导致 6*3=18 个元素。

您附加到 cat_list 的内部循环的每次运行,而不是仅在找到该项目时或在未找到该项目时附加一次。我相信这就是您想要做的:

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:
found_in_cat=False
for j in cat:
if i == j:
cat_list.append(cat.index(j))
if not found_in_cat:
cat_list.append(0)

print(cat_list) # should print [2,0,1,0,0,0]
print(len(cat_list)) # should print 6, not 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:
if i in cat:
cat_list.append(cat.index(i))
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

关于python:从 Pandas 中的数据框生成的列表比数据框列长得多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70126660/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com