удаление чисел из столбца в питон пандах - PullRequest
0 голосов
/ 13 ноября 2018

Я хочу удалить все числа в записях определенного столбца в кадре данных Python-панд. К сожалению, такие команды, как .join() и .find(), не могут быть повторяемыми (когда я определяю функцию для итерации записей, я получаю сообщение о том, что плавающие переменные не имеют атрибутов .find и .join). Есть ли команды, которые позаботятся об этом в пандах?

def remove(data):

  for i in data if not i.isdigit():
    data=''         
    data=data.join(i)  
    return data

myfile['column_name']=myfile['column_name'].apply(remove()) 

Ответы [ 3 ]

0 голосов
/ 13 ноября 2018

Вы можете удалить все числа, как это:

import pandas as pd

df = pd.DataFrame ( {'x' : ['1','2','C','4']})
df[ df["x"].str.isdigit()  ] = "NaN"
0 голосов
/ 13 ноября 2018

Или используйте pd.to_numeric с errors='coerce' для преобразования столбца в числовое значение и исключения нечисловых значений:

Использование @Raidex setup:

s = pd.DataFrame({'x':['p','2','3','d','f','0']})
pd.to_numeric(s['x'], errors='coerce')

Вывод:

0    NaN
1    2.0
2    3.0
3    NaN
4    NaN
5    0.0
Name: x, dtype: float64

РЕДАКТИРОВАТЬ для обработки любой ситуации.

s['x'].where(~s['x'].str.isdigit())

Вывод:

0      p
1    NaN
2    NaN
3      d
4      f
5    NaN
Name: x, dtype: object

ИЛИ

s['x'].where(s['x'].str.isdigit())

Вывод:

0    NaN
1      2
2      3
3    NaN
4    NaN
5      0
Name: x, dtype: object
0 голосов
/ 13 ноября 2018

Невозможно знать наверняка без образца данных, но ваш код подразумевает, что data содержит строки, так как вы вызываете isdigit для элементов.

Исходя из вышесказанного, есть много способов сделать то, что вы хотите. Одним из них является понимание условного списка:

import pandas as pd
s = pd.DataFrame({'x':['p','2','3','d','f','0']})
out = [ x if x.isdigit() else '' for x in s['x'] ]
# Output: ['', '2', '3', '', '', '0']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...