我对整个大熊猫和numpy世界都很陌生。我有python的经验,但不是这方面。我试图使用数据集,我发现了一个我无法解释的问题。如果有经验的人帮助我理解其中出现的问题,那将是很棒的。
我有一个包含三个字段的CSV文件。 "年龄","工人阶级"和"收入"。标题丢失了所以我按以下方式加载了CSV -
import numpy as np
import pandas as pd
df = pd.read_csv("test.csv", index_col=False, header=None, names=["age", "workclass", "income"])
现在最后一列中的数据采用这种格式 - "< = 50K"或"> 50K"。我想将数据转移到" 0"或" 1"基于上面的值。所以0为"< = 50K"和#34;> 50K"。为此,我写了这行代码
def test_func(x):
if x == "<=50K":
return "0"
else:
return "1"
df['income'] = df['income'].apply(test_func)
这使得所有列成为&#34; 1&#34;!我在test_func中做了一些打印,看起来x的值正确,x的类型是&#34; str&#34;。我无法理解,在这种情况下,为什么总会出现&#34; else&#34;部分正在执行,而不是&#34;如果&#34;部分。我究竟做错了什么?
我忽略了这可能是一个非常愚蠢的错误。我不确定,任何帮助都会很棒
提前致谢。
答案 0 :(得分:3)
选项1
title = response.xpath('//h1[@id="title"]/span/text()').extract()
astype
选项2
df['income'] = df['income'].eq("<=50K").astype(int)
np.where
答案 1 :(得分:2)
我会这样做:
df.loc[df['income']=='<=50K','income'] = 0
df.loc[df['income']!='<=50K','income'] = 1
答案 2 :(得分:2)
Alex的解决方案是经典的,但numpy中有一个内置的if / this函数,名为np.where。我不是很熟悉它,但它看起来像......
df['income'] = np.where((df['income']=='<=50K','income'), 1 ,0)