Разделение тестовых данных в столбце csv на несколько с использованием Python - PullRequest
0 голосов
/ 19 января 2020

Я относительно новичок в python.

Мне нужно выделить некоторые данные испытаний (влажность, температура) из файла CSV. Файл не имеет заголовков, но столбец 0 содержит дату, столбец 1 содержит время, а столбец 2 содержит данные, которые мне нужно выделить. Данные поступают из Arduino, где я измерил влажность и температуру.

Я могу открыть файл с помощью pandas csv_read, но я не могу отделить столбец 2 с помощью sep = ',', и я могу не знаю почему. После того, как я отделил данные, мне нужно записать это в новый файл.

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

Исходный файл CSV

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"

1 Ответ

1 голос
/ 19 января 2020

Я создал файл .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  

Отсюда вы можете назвать каждый столбец и / или поместить эти новые столбцы обратно в исходный кадр данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...