【发布时间】:2020-02-11 18:53:01
【问题描述】:
鉴于以下 CSV
+-------------------------------+-------------+--------------------+--------------+
| Timestamp | DoublePoint | HexPoint | BooleanPoint |
+-------------------------------+-------------+--------------------+--------------+
| 07/23/2019 16:53:12.523-07:00 | 0.0 | 0x0000000000000001 | True |
| 07/23/2019 16:53:14.519-07:00 | 0.0 | 0x0000000000000002 | False |
| 07/23/2019 16:53:16.516-07:00 | 0.25 | 0x0000000000000003 | true |
| 07/23/2019 16:53:18.513-07:00 | 0.25 | 0x00000004 | false |
| 07/23/2019 16:53:20.526-07:00 | 0.0 | 0x00000005 | True |
| 07/23/2019 16:53:22.522-07:00 | 0.50 | 0x00000006 | False |
| 07/23/2019 16:53:24.519-07:00 | 0.5 | 0x00000007 | True |
| 07/23/2019 16:53:26.516-07:00 | 0.9999 | 0x00000008 | False |
+-------------------------------+-------------+--------------------+--------------+
我需要使用 pandas 库读取它并获得一个 DataFrame,其中除第一列之外的所有列都是浮动的。 对于数字,这应该是自动的,但对于其他类型的输入,如 HexPoint 和 BooleanPoint,我需要提供一个转换函数来将它们转换为数字。
在本例中,HexPoint 值应转换为十进制,BooleanPoints 应将 True/true 转换为 1,False/false 转换为 0。
所以生成的 DataFrame 应该如下所示:
+-------------------------------+-------------+----------+--------------+
| Timestamp | DoublePoint | HexPoint | BooleanPoint |
+-------------------------------+-------------+----------+--------------+
| 07/23/2019 16:53:12.523-07:00 | 0.0 | 1.0 | 1.0 |
| 07/23/2019 16:53:14.519-07:00 | 0.0 | 2.0 | 0.0 |
| 07/23/2019 16:53:16.516-07:00 | 0.25 | 3.0 | 1.0 |
| 07/23/2019 16:53:18.513-07:00 | 0.25 | 4.0 | 0.0 |
| 07/23/2019 16:53:20.526-07:00 | 0.0 | 5.0 | 1.0 |
| 07/23/2019 16:53:22.522-07:00 | 0.50 | 6.0 | 0.0 |
| 07/23/2019 16:53:24.519-07:00 | 0.5 | 7.0 | 1.0 |
| 07/23/2019 16:53:26.516-07:00 | 0.9999 | 8.0 | 0.0 |
+-------------------------------+-------------+----------+--------------+
重要注意事项:
- 我事先不知道 CSV 有多少列。
- 我不知道 CSV 中的列是什么类型的数据。它们可以是双精度值、十六进制值和布尔值的混合。
- 唯一可以假设的是第一列名为“Timestamp”并包含时间戳。
有没有办法告诉 pandas 读取这个 CSV 并尝试将所有列(除了第一列)转换为浮动。如果它本身无法做到这一点,请运行一个自定义函数,该函数将获取该值并返回其数字表示,如上所述?
【问题讨论】:
-
到目前为止你有没有尝试过?请分享您解决此问题的尝试:)
标签: python python-3.x pandas csv