Filter out CSV values after a space in python
因此,我的目标是读取一个地理编码程序创建的csv文件,该文件使用空间和纬度或经度值放置了令人讨厌的字符串值……我可以遍历所有这些Excel单元格并手动拆分它们,但我真的希望读取csv,而只是使用空间作为分隔符并过滤掉所有字符串值。我知道如何导入csv,甚至知道如何指定空格作为分隔符,我想我……但我不明白的是如何过滤掉所有字符串值,只将数值保存在全新的Excel工作表中。有人知道怎么做吗?
这是我迄今为止用来分隔空白的代码:pd.read_csv('file.csv',delim_whitespace=true)
- 1。你的csv的一些剪影真的很有用。2。你有熊猫吗?
- 您可以参考regex/pandas。
- 你能给我们举一个你的csv和你写的代码的例子吗?
- @ C????S????是的,对不起。出于某种原因,它切断了我的消息的结尾……我添加了目前为止我拥有的代码。我确实用熊猫。
- CSV?那是哪里?
- 尝试先在csv中修复字符串值,然后用正确的值读取csv。
- @ C????S?????在大学大道上。我现在住在佛罗里达州,那里我们没有任何权力,作为信息系统的副教授工作。所以它在大学服务器上,没有电源。但是,代码读起来是这样的:乔治亚64.66佛罗里达93.95德克萨斯24.74,所以它只是字符串值,由空格和数字值分隔开。
- @用户18139所以您希望得到什么结果?
- @ C????S?????我想过滤掉所有字符串值,只将数值输出到csv或excel工作表中。这些是地理编码或经纬度点,所以我只需要把它们放在地图上。
- @用户18139我知道了。你可以看看我的答案,如果有帮助的话就用它。
- 如果答案有帮助,请不要忘记接受它-单击答案旁边的复选标记(?)将其从灰色变为填充。谢谢。
使用pd.read_csv读取csv,使用select_dtypes只选择数值列,使用to_csv只将数值列保存到csv。
1 2
| df = pd.read_csv('file.csv', delim_whitespace=True)
df.select_dtypes(['float']).to_csv('file.csv') |
如果您的文件没有头文件,则在读取csv时需要添加header=None。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| df
a b c
0 1.0 0 foo
1 2.0 0 NaN
2 1.0 1 bar
3 1.0 1 foo
4 NaN 1 baz
5 3.0 1 foo
6 3.0 1 bar
df.select_dtypes(['float'])
a
0 1.0
1 2.0
2 1.0
3 1.0
4 NaN
5 3.0
6 3.0 |
如果出于某种原因,您有要保存的内部列,请将float更改为number:
1 2 3 4 5 6 7 8 9 10
| df.select_dtypes(['number'])
a b
0 1.0 0
1 2.0 0
2 1.0 1
3 1.0 1
4 NaN 1
5 3.0 1
6 3.0 1 |
再挂一个.to_csv电话。
- 诚实地回答它就好了。因此选择作为答案。但我还有一个问题。如果它不是空格而是逗号分隔的呢?我要把它从空白改成逗号吗?
- @用户18139删除delim_whitespace=true,改为添加delimiter=","
如果您按照应该的方式将数据分开,则可以使用此选项:
1
| df.convert_objects(convert_numeric=True).dropna(axis=1) |
最后可以添加.to_csv('your_file_name.csv')。
- 转换和下降似乎是浪费。选择将更加简单和高效。
- 不知道number选项+1
- @ C????S????所以在你的答案中,你是从csv中读取,获取整个文件,然后过滤掉你想要的值……但是他建议转换文件,然后删除它们?看起来很困惑
- @用户18139转换列,而不是文件。转换后的字符串列将变为NaN并被删除。这很危险,因为原始数据也可能有nan。
- @ C????S????我给你发了一封电子邮件到你个人资料上的邮箱地址。在那里联系我可能会更容易……我按照确切的说明操作,但它不会将数据点分成单独的列。它们都被塞进一个单独的数据帧列中……它也不会选择浮点值,我也不知道为什么。
- @用户18139当然。我现在有点忙,但我会尽快给你回电话的。