【发布时间】:2018-05-11 06:08:47
【问题描述】:
我有一个 csv 文件,有几列是/否,我已经尝试过堆栈溢出的大多数解决方案,但似乎没有任何效果。
sample['colval'] = sample['colval'].apply(lambda x: 0 if x=='N' else 1)
例如,我在我的数据上使用了上面的代码。它将所有内容都转换为1,如Y 转换为1 和N 转换为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吗?如果你可以同时拥有no和n,那么你可以使用in而不是==。 -
您应该展示一个正在使用的数据示例(是/否、是/否还是是/否?您在问题中可以互换使用它们,但这很重要,因为 @ 987654334@ 仅适用于完全匹配)
-
'N' == 'no'为 false,所以会被转换为 1。如果要匹配N,则必须与'N'进行比较。如果您想匹配以小写或大写N开头的任何内容,您可以这样写——例如,if x.lower().startswith('n')。但是无论你想做什么,你都必须写that; Python 无法猜出你真正想写什么。 -
@janusvm 是 Y/N ,不是 yes/no 或 y/n。
标签: python