【问题标题】:Splitting test data in a csv column into several using Python使用 Python 将 csv 列中的测试数据拆分为多个
【发布时间】:2020-01-19 18:05:25
【问题描述】:

我对 python 比较陌生。

我需要从 csv 文件中分离出一些测试数据(湿度、温度)。该文件没有标题,但第 0 列包含日期,第 1 列包含时间,第 2 列包含我需要拆分的数据。 数据来自我测量湿度和温度的 Arduino。

我可以使用 pandas csv_read 打开文件,但我似乎无法使用 sep=',' 将第 2 列分开,我不知道为什么。 一旦我将数据分离出来,我需要将其写入一个新文件。

import pandas as pd

file = open('RH_TEMP-13-01-2020-161111.csv', 'r')

df = pd.read_csv(file, sep = ',', header = None)

print(df)

输出:

        0         1                          2

0   13/01  16:11:13  41.84,20.36,37.19,21.59\n

1   13/01  16:11:15  41.84,20.36,37.17,21.59\n

2   13/01  16:11:16  41.79,20.37,37.25,21.59\n

3   13/01  16:11:18  41.79,20.36,37.25,21.59\n

4   13/01  16:11:19  41.77,20.37,37.04,21.61\n

5   13/01  16:11:20  41.77,20.37,36.95,21.59\n

6   13/01  16:11:22  41.74,20.37,37.69,21.61\n

7   13/01  16:11:23  41.72,20.37,38.48,21.61\n

8   13/01  16:11:25  41.72,20.39,37.94,21.61\n

9   13/01  16:11:26  41.72,20.39,37.54,21.62\n

10  13/01  16:11:27  41.70,20.39,37.25,21.62\n

11  13/01  16:11:29  41.70,20.37,37.04,21.61\n

12  13/01  16:11:30  41.70,20.40,36.95,21.61\n

13  13/01  16:11:32  41.67,20.40,36.90,21.61\n

14  13/01  16:11:33  41.67,20.40,36.92,21.62\n

15  13/01  16:11:34  41.67,20.41,36.87,21.61\n

16  13/01  16:11:36  41.64,20.40,36.87,21.62\n

17  13/01  16:11:37  41.64,20.41,36.87,21.62\n

18  13/01  16:11:39  41.64,20.41,36.90,21.64\n

19  13/01  16:11:40  41.62,20.41,36.90,21.62\n

20  13/01  16:11:42  41.62,20.41,36.90,21.62\n

21  13/01  16:11:43  41.62,20.43,39.02,21.62\n

Original csv file

13/01,16:11:13,"41.84,20.36,37.19,21.59 " 13/01,16:11:15,”41.84,20.36,37.17,21.59 " 13/01,16:11:16,”41.79,20.37,37.25,21.59 " 13/01,16:11:18,”41.79,20.36,37.25,21.59 " 13/01,16:11:19,”41.77,20.37,37.04,21.61 " 13/01,16:11:20,”41.77,20.37,36.95,21.59 "

【问题讨论】:

  • 能否请您提及原始 CSV 文件的前几行(导入或处理之前的 RH_TEMP-13-01-2020-161111.csv)?
  • 导入前请出示原始数据
  • 添加了原始数据文件。感谢您的编辑merit_2 :)
  • Please, don't post images of text.。在记事本或写字板上打开您的 CSV(假设您使用的是 Windows,因为屏幕截图),选择几行,复制它们,然后编辑您的帖子并将所选文本粘贴到上面。
  • 没有数据(不是部分图片)很难看到发生了什么。我假设您实际上并没有保存带有逗号分隔列的 .csv 文件。 read_csv 不需要 sep= 因为 read_csv 是带有 sep=',' 的 read_table 在文本阅读器(记事本、gedit 等)中打开您的“.csv”文件,为我们复制几行并在上面发布。

标签: python csv delimiter comma


【解决方案1】:

我根据您提供的内容创建了一个 .csv 文件并像这样导入它(给列名)

import pandas as pd

df = pd.read_csv('splitting.csv', header=None, names=["date", "time", "nums"])

导入后的数据是这样的,

   date      time                       nums
0  13/01  16:11:13  41.84,20.36,37.19,21.59  
1  13/01  16:11:15  41.84,20.36,37.17,21.59  
2  13/01  16:11:16  41.79,20.37,37.25,21.59  
3  13/01  16:11:18  41.79,20.36,37.25,21.59  
4  13/01  16:11:19  41.77,20.37,37.04,21.61  

您遇到的问题是 python 将“nums”列为字符串。我们需要把它分开。

这样,

new= df["nums"].str.split(",", n = 5, expand = True)

我将 n 设置为 5 以任意长。你只需要 4 个。

print(new.head())

      0      1      2        3
0  41.84  20.36  37.19  21.59  
1  41.84  20.36  37.17  21.59  
2  41.79  20.37  37.25  21.59  
3  41.79  20.36  37.25  21.59  
4  41.77  20.37  37.04  21.61  

您可以在此处命名每列和/或将这些新列放回原始数据框中。

【讨论】:

  • 很好用!还有一件事,当您打印(新)时,它会出现 /n。有没有办法消除这个或没有意义?当我合并文件时,最终值显示为空白,但是当我单击 excel 中的框时,它就在那里(奇怪)。
猜你喜欢
  • 1970-01-01
  • 2021-01-26
  • 2016-10-07
  • 2016-12-15
  • 2021-02-24
  • 2021-04-29
  • 1970-01-01
  • 1970-01-01
  • 2018-08-21
相关资源
最近更新 更多