#python #pandas
Вопрос:
Я пытаюсь прочитать следующий файл в фрейм данных pandas :
(dataA
0
400
2800
9200
5600
2000
8400
4800
1200
7600
4000
400
6800
)
(dataB
30
30
30
30
30
30
20
500
30
50
330
530
930
)
Цель состоит в том, чтобы иметь что-то подобное :
dataA dataB
0 30
400 30
2800 30
9200 30
5600 30
2000 30
8400 20
4800 500
1200 30
7600 50
4000 330
400 530
6800 930
Я знаю, что это можно сделать, прочитав файл строка за строкой, но мне было интересно, есть ли простой способ, чтобы его прочитали панды (например, read_csv).
Это связано с тем, что существует множество файлов, подобных этому, и постобработка уже автоматизирована для такого типа данных.
Комментарии:
1. есть ли
(
в данных ваш фактический фрейм данных?2. Нет, это была опечатка.
Ответ №1:
основываясь на том факте, что у вас есть паретизис, который разделяет столбцы, мы можем создать два новых индекса и распаковать ваши столбцы.
Важно, чтобы вы прочитали свой файл с header=None
df = pd.read_excel(...,header=None)
s = df[0].str.contains('(',regex=True)
df1 = df.set_index([s.cumsum(), df.groupby(s.cumsum()).cumcount()]).unstack(0)
#additional clean up
df1 = df1.replace('(|)','',regex=True).replace('',np.nan).dropna().droplevel(0,1)
#setup columns.
df1.columns = df1.iloc[0]
df1 = df1.iloc[1:]
print(df1)
0 dataA dataB
1 0 30
2 400 30
3 2800 30
4 9200 30
5 5600 30
6 2000 30
7 8400 20
8 4800 500
9 1200 30
10 7600 50
11 4000 330
12 400 530
13 6800 930
Ответ №2:
Вам нужно создать фрейм данных из словаря списков:
- Импорт библиотеки панд:
import pandas as pd
- Создайте словарь из своего списка:
data = { 'dataA': [0,400 ,2800,9200,5600,2000,8400,4800,1200,7600,4000,400,6800], 'dataB': [30,30,30,30,30,30,20,500,30,50,330,530,930]}
- Создайте свой фрейм данных:
df = pd.DataFrame(data)
- Назовите свой фрейм данных:
df
В целом, вы можете увидеть общий код:
import pandas as pd
data = { 'dataA': [0,400 ,2800,9200,5600,2000,8400,4800,1200,7600,4000,400,6800],
'dataB': [30,30,30,30,30,30,20,500,30,50,330,530,930]}
df = pd.DataFrame(data)
df
и результат будет:
dataA dataB
0 0 30
1 400 30
2 2800 30
3 9200 30
4 5600 30
5 2000 30
6 8400 20
7 4800 500
8 1200 30
9 7600 50
10 4000 330
11 400 530
12 6800 930
Если вы не хотите видеть количество строк в своем фрейме данных, добавьте этот код в конце:
print(df.to_string(index=False))
Результатом будет:
dataA dataB
0 30
400 30
2800 30
9200 30
5600 30
2000 30
8400 20
4800 500
1200 30
7600 50
4000 330
400 530
6800 930
Комментарии:
1. это вообще не отвечает на вопрос?
2. как вы думаете, почему мой ответ не отвечает на вопрос??
3. потому что это не отвечает на вопрос.. все, что вы сделали, это создали фрейм данных из списка и распечатали его?
4. Да, всякий раз, когда он/она хочет прочитать данные, определенно нужен файл данных, такой как csv, xlsx, или создать список данных для чтения данных, и поскольку он/она не ссылался ни на какие файлы, я создал список в словаре для доступа к данным.