Как я могу заменить все слова в фрейме данных python

#python #python-3.x #dataframe

#python #python-3.x #фрейм данных

Вопрос:

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

Я застрял, пытаясь .replace() заменить символы в строках ничем, чтобы остались только цифры (пытаясь удалить все слова в фрейме данных). Другая проблема заключается в том, что в каждой ячейке содержится несколько слов и чисел.

Вот текущая база данных:

 from tabula import read_pdf
import openpyxl
from openpyxl import load_workbook
import pandas as pd
import numpy as np

df1 = tabula.read_pdf('C:/Users/Blake/Desktop/Python/AGL_Bill.pdf',guess=False, pages=2)
df1.columns = ['Description', 'Blank', 'Values']




df1.drop(labels=None, axis=None, index=[0,1,3,4,7,8,25,26,19,15,16,20,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62], columns=None, level=None, inplace=True, errors='raise')
df1.drop(labels=None, axis=1, columns=['Values'], level=None, inplace=True, errors='raise')





df1['Description'].str.replace('kWh', '')



print (df1)

df1.to_csv('Tableone.csv', encoding='utf-8')


wb2 = load_workbook('C:/Users/Blake/Desktop/ETemplate.xlsx')


wb2.create_sheet('DATA')
wb2.save('C:/Users/Blake/Desktop/Template.xlsx')`
  

Ответ №1:

Если вы пытаетесь заменить символы ничем — тогда регулярное выражение с использованием чисел, каждая ячейка — объединение их вместе.

импортировать повторно

 import pandas as pd

data={'1':'Some dumb data $200.22 for me','2':'Some more really dumb data $5.23'}
df=pd.DataFrame.from_dict(data,orient='index')
df.columns=['Data']

def Num_Only(val):
    return ' '.join(re.findall('[d.] ',val))

df['New']=''
df.New=df.Data.apply(lambda x: Num_Only(x))
Which should output a new Dataframe ... like this
  

Вывод сейчас… Я удалил $, поскольку он не служит никакой цели.

 1.   Some dumb data $200.22 for me  200.22
2   Some more really dumb data $5.23    5.23
  

Надеюсь, это поможет вам

Комментарии:

1. Я только что попробовал это, и я получаю: AttributeError: объект ‘DataFrame’ не имеет атрибута ‘Data’

2. «Данные» — это имя столбца в моем тестовом фрейме данных. Ваши столбцы ‘Description’ и ‘Blank’ …. Чтобы установить их, сделайте что-то вроде df.columns=[‘ColName1′,’ColName2’]

3. Спасибо, это сработало, но теперь там написано: TypeError: ожидаемый объект, подобный строке или байтам

4. Функция Num_Only нуждается в некоторой обработке ошибок и проверке в ней. Таким образом, он может обрабатывать ячейки без (или, возможно, повторяющихся групп)….. Поскольку я спешил, я не добавил это…. Боюсь, что домашнее задание для вас 🙂

5. Спасибо, Тим!! У меня это получилось, просто пришлось изменить столбцы на str перед передачей в Num_only.