【问题标题】:Converting Yes to 1 and No to 0 in python在 python 中将 Yes 转换为 1 和 No 转换为 0
【发布时间】:2018-05-11 06:08:47
【问题描述】:

我有一个 csv 文件,有几列是/否,我已经尝试过堆栈溢出的大多数解决方案,但似乎没有任何效果。

sample['colval'] = sample['colval'].apply(lambda x: 0 if x=='N' else 1)

例如,我在我的数据上使用了上面的代码。它将所有内容都转换为1,如Y 转换为1N 转换为1

还有很多其他示例,都产生了类似的结果,很少有导致 Y/N 的输出为“无”。
sample.colval[0:20]

0 N
1 N 2 N
3 N
4 N
5 N
6 N
7 N
8 N
9 N
10 N
11 Y
12 N
13 N
14 N
15 N
16 N
17 N
18 Y
19 N
Name: colval, dtype: object

请帮忙,谢谢

【问题讨论】:

  • 只需使用一些软件,如 libre calc 或 excel 或其他任何软件,然后替换所有选择...没有理由想太多
  • 你有大小写匹配吗,可以0 if x.lower() == 'no' else 1吗?如果你可以同时拥有non,那么你可以使用in 而不是==
  • 您应该展示一个正在使用的数据示例(是/否、是/否还是是/否?您在问题中可以互换使用它们,但这很重要,因为 @ 987654334@ 仅适用于完全匹配)
  • 'N' == 'no' 为 false,所以会被转换为 1。如果要匹配 N,则必须与 'N' 进行比较。如果您想匹配以小写或大写 N 开头的任何内容,您可以这样写——例如,if x.lower().startswith('n')。但是无论你想做什么,你都必须写that; Python 无法猜出你真正想写什么。
  • @janusvm 是 Y/N ,不是 yes/no 或 y/n。

标签: python


【解决方案1】:

鉴于旧版本的 Python 并且无法访问原始数据,发现很难重复,但您上面的输出表明值中有空格。试试

sample['colval'] = sample['colval'].apply(lambda x: 0 if x.strip()=='N' else 1)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-11
    • 2013-11-06
    • 2023-02-02
    • 1970-01-01
    • 1970-01-01
    • 2014-01-17
    • 1970-01-01
    • 2011-01-31
    相关资源
    最近更新 更多