Форматировать вывод панд в CSV - PullRequest
1 голос
/ 18 октября 2019

Я новичок в python и pandas и создал тестовую веб-страницу с html-кодом, который поможет научиться извлекать данные, а затем форматировать в CSV для использования в excel. Ниже приведен код, который я придумал, который помещает его в хороший формат, но я застрял на том, как отформатировать его в файл CSV для импорта.

Код:

# Importing pandas 
import pandas as pd 

# The webpage URL whose table we want to extract 
url = "/home/dvm01/e007"

# Assign the table data to a Pandas dataframe 
table = pd.read_html(url,**index_col=0**)[0]
#table2 = pd.read_html(url)[0],pd.read_html(url)[1],pd.read_html(url)[6]

# Print the dataframe 
print(table)
#print(table2)

# Store the dataframe in Excel file 
#table.to_excel("data.xlsx") 

Вывод:

            Account                                          Account.1
ID:                                         e007
Description:  ABST: 198, SUR: J DOUTHIT
Geo ID:                            014.0198.0000

Я пытаюсь понять, как удалить индекс для строк и сделать текст перед первым: стать заголовком столбца. В строке 1 у меня два: но все после первого: должны быть данные для заголовка столбца.

Я хотел бы взять вышеуказанный текущий вывод и иметь в качестве столбца ID, Description и Geo IDЗаголовки и текст, который следует после «:», будут данными для каждого из заголовков.

Мне не нужны «Учетная запись» и «Учетная запись.1». Я считаю, что они распознаются как заголовки столбцов. Ниже я хотел бы, чтобы выходные данные выглядели в Excel, но я не могу понять, как правильно отформатировать их для экспорта в CSV, который можно импортировать. Может быть, мне даже не нужно импортировать или форматировать в CSV, функция 'table.to_excel', похоже, не нуждается в этом шаге.

+------+---------------------------+---------------+
| ID   | Description               | Geo ID        |
+------+---------------------------+---------------+
| e007 | ABST: 198, SUR: J Douthit | 014.0198.0000 |
+------+---------------------------+---------------+

Мне удалось удалить номера индексов, используя index_col =0 выше, где я определяю переменную dfs. Не уверен, что это лучший способ, но он делает то, что я пытался сделать для этой части.

Поскольку я новичок в python, мне трудно форматировать свой вопрос в Google или StackOverflow, чтобы получить ответыЯ ищу. Если бы кто-то мог просто указать мне правильное направление в том, что я ищу, это сработало бы, но примеры были бы также хороши.

Спасибо за любое руководство

1 Ответ

1 голос
/ 18 октября 2019

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

|id|name|data1|data2|date3|-url-|
|--|----|-----|-----|-----|-----|
|1 |xyz |datax|datay|dataz|x:url|
|2 |xyz |datax|datay|dataz|x:url|
|3 |xyz |datax|datay|dataz|x:url|
...

Затем вы можете задать вопросы о том, как создать правильный вывод Dataframe, который соответствует вашему желаемому дизайну:)

вы также можете использовать этот генератор онлайн: https://www.tablesgenerator.com/text_tables

+----+------+-------+-------+-------+------+
| Id | Name | Data1 | Data2 | Data3 | Url  |
+----+------+-------+-------+-------+------+
| 1  | xyz  | datax | datay | dataz | xurl | 
+----+------+-------+-------+-------+------+
| 2  | xyz  | datax | datay | dataz | xurl |
+----+------+-------+-------+-------+------+
| 3  | xyz  | datax | datay | dataz | xurl |
+----+------+-------+-------+-------+------+

Хорошо, теперь у вас есть дизайн таблицы данных. далее я бы попросил вас попробовать ноутбук Jupyter. Это позволит вам тестировать ваши кадры данных построчно. Каждый тест должен быть новой передачей набора данных.

Как я вижу, что рабочий процесс будет соответствовать вашим потребностям: 1. Посмотрите тест и посмотрите, какие у вас текущие столбцы DF:

print(df.columns)

2. используйте эту команду для редактирования ваших столбцов:

df.rename(columns={'old column 1':'ID',
                          'old column 2':'Description',
                          'old column 3':'Geo ID'}, 
                 inplace=True)

используйте эту команду для изменения данных индекса

df.rename (index = {0: 'zero', 1: 'one'}, inplace = True)

используйте эту команду для изменения строки

df.loc['--insert_Column_here--', '--insert_row_here--'] = new_value
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...