Как разбить столбец в DataFrame с помощью pandas? - PullRequest
0 голосов
/ 16 июня 2020

Я импортировал набор данных, который выглядит следующим образом.

Peak, Trough
0   1857-06-01, 1858-12-01
1   1860-10-01, 1861-06-01
2   1865-04-01, 1867-12-01
3   1869-06-01, 1870-12-01
4   1873-10-01, 1879-03-01
5   1882-03-01, 1885-05-01
6   1887-03-01, 1888-04-01

это файл CSV. Но когда я проверяю .shape, это

(7, 1)

Я думал, что CSV-файл может автоматически разделяться запятыми, однако этот не работает.

Я хочу разделить этот столбец на два, разделенных запятыми, а также имена столбцов. Как я могу это сделать?

Ответы [ 2 ]

2 голосов
/ 16 июня 2020

Использовать тег sep в read_csv

Это примерно так:

df = read_csv(path, sep = ', ')
1 голос
/ 16 июня 2020

Те же данные в текстовый файл или csv, а затем используйте read_csv с параметром skipinitialspace=True и parse_dates для преобразования значений в дату и время:

df = pd.read_csv('data.txt', skipinitialspace=True, parse_dates=[0,1])
print (df.head())
        Peak     Trough
0 1857-06-01 1858-12-01
1 1860-10-01 1861-06-01
2 1865-04-01 1867-12-01
3 1869-06-01 1870-12-01
4 1873-10-01 1879-03-01

print (df.dtypes)
Peak      datetime64[ns]
Trough    datetime64[ns]
dtype: object

Если данные в excel в одном столбце возможно использование Series.str.split по первому столбцу, преобразование в дату и время и последнее задание новых имен столбцов:

df = pd.read_excel('data.xlsx')

df1 = df.iloc[:, 0].str.split(', ', expand=True).apply(pd.to_datetime)
df1.columns = df.columns[0].split(', ')
print (df1.head()) 
        Peak     Trough
0 1857-06-01 1858-12-01
1 1860-10-01 1861-06-01
2 1865-04-01 1867-12-01
3 1869-06-01 1870-12-01
4 1873-10-01 1879-03-01

print (df1.dtypes)       
Peak      datetime64[ns]
Trough    datetime64[ns]
dtype: object
...