【问题标题】:Filter out CSV values after a space in python在python中的空格后过滤掉CSV值
【发布时间】:2017-09-14 12:16:25
【问题描述】:

所以我的目标是读取由地理编码器创建的 CSV 文件,该文件令人讨厌地使用空格和纬度或经度值放置字符串值……我可以浏览所有这些 excel 单元格并手动拆分它们,但我真的很想改为读取 CSV 并仅使用空格作为分隔符并过滤掉所有字符串值。我知道如何导入 CSV,甚至知道如何指定空格作为分隔符,我想我……但我不明白的是如何过滤掉所有的字符串值并只将数值保存在全新的 Excel 工作表中。有谁知道怎么做?

这是我目前用来分隔空白的代码: pd.read_csv('file.csv',delim_whitespace=True)

【问题讨论】:

  • 1.您的 CSV 的一些剪裁会真的真的有帮助。 2. 你有熊猫吗?
  • 你可以参考正则表达式/熊猫。
  • 您能否向我们展示您的 CSV 和您编写的代码的示例?
  • @cᴏʟᴅsᴘᴇᴇᴅ 是的,对不起。出于某种原因,它切断了我的信息的结尾……我添加了到目前为止的代码。我确实使用熊猫。
  • 还有 CSV?那是哪里?

标签: python pandas csv


【解决方案1】:

使用pd.read_csv 读取您的CSV,使用select_dtypes 仅选择数字列,并使用to_csv 仅将数字列保存到CSV。

df = pd.read_csv('file.csv', delim_whitespace=True)
df.select_dtypes(['float']).to_csv('file.csv')

如果您的文件没有标题,则需要在读取 CSV 时添加 header=None


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

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 调用。

【讨论】:

  • 诚实完美地回答它。正因为如此,才会被选为答案。但我还有一个问题。如果用逗号分隔而不是空格怎么办?我是否将其从空格更改为逗号?
  • @user18139 删除 delim_whitespace=True 而是添加 delimiter=","
【解决方案2】:

如果你按照你应该的方式分离数据,你可以使用这个:

df.convert_objects(convert_numeric=True).dropna(axis=1)

您可以在末尾添加.to_csv('your_file_name.csv')

【讨论】:

  • 转换和删除似乎很浪费。选择会更简单、更高效。
  • 不知道number选项+1
  • @cᴏʟᴅsᴘᴇᴇᴅ 所以在你的回答中,你是从 CSV 读取,获取整个文件,然后只是过滤掉你想要的值......但他建议转换文件然后删除它们?这似乎令人困惑
  • @user18139 转换列,而不是文件。转换后的字符串列变为 NaN 并被删除。这很危险,因为您的原始数据也可能包含 NaN。
  • @cᴏʟᴅsᴘᴇᴇᴅ 我已向您个人资料中的电子邮件地址发送了一封电子邮件。回到那里联系我可能会更容易......我按照确切的说明进行操作,但它不会将数据点分成单独的列。它们都只是塞进一个数据框列……而且它也不会选择浮点值,我也不知道为什么
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-06-03
  • 2019-03-17
  • 1970-01-01
  • 2022-01-21
  • 1970-01-01
  • 2017-08-24
  • 1970-01-01
相关资源
最近更新 更多