2016-10-20 140 views
1

我想选择一个DataFrame列,迭代它并只选择数字,并用'未知'替换包含字母和其他数字的数字。我试过isreal()方法,但它没有奏效。有没有一种方法可以在没有功能的情况下完成这项任务?寻找带有字母的数字

%matplotlib inline 
%pylab inline 
import pandas as pd 
import numpy as np 
import matplotlib.pyplot as plt 
file = 'C:/Users/Сынкетру/Desktop/attacks.csv' 
df = pd.read_csv(file, sep=',', encoding='ISO-8859-1') 


df_clean = df.Age.dropna() 

def age(number): 
    try: 
     number = df.isreal() 
    except ValueError: 
     number = 'Unknown' 

map(age, df_clean) 
print(d) 
+0

可能the'isnumeric()'方法将工作? [例子isnumeric()](https://www.tutorialspoint.com/python/string_isnumeric.htm) –

+0

你可以显示数据的实际外观,因为它在这里很重要。例如,类型总是字符串? – EdChum

+0

如果类型是字符串,那么你可以做'df_clean.loc [〜df_clean.str.isdigit()] ='unknown',但是你可能需要先将dtype转换为'df_clean = df_clean.astype(str)' – EdChum

回答

1
df = pd.DataFrame(dict(A=['1', 2, '_3', '4.', 'hello', 3.14])) 

df['A'] = np.where(pd.to_numeric(df.A, 'coerce').notnull(), df.A, 'unknown') 
df 

enter image description here

+0

谢谢,它的工作原理。 – Sinchetru

0
df.Age[~df.Age.apply(np.isreal)] = "unknown" 
+0

尽管此代码片段可能会解决问题,但[包括解释](http://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers)确实有助于提高帖子的质量。请记住,您将来会为读者回答问题,而这些人可能不知道您的代码建议的原因。 – andreas