2016-02-02 11 views
1

У меня есть файл csv, и я пытаюсь удалить все строки, оставляя только цифры: ex 1004.242, в столбце. Вот мой код:Python Pandas CSV удаляет все строки из определенного столбца

def grabkey_env(): 
    df = pandas.read_csv('/Users/eeamesX/PycharmProjects/CsvTask/FIT_TC_Resolved_JIRA2.csv', usecols=(1,10),skiprows=(0,1,2,3)) 
    df.columns = ['keys', 'env'] 


    df['env'].replace(to_replace='[^0-9]+', value=' ',regex=True) 


    print df 

    df.to_csv('newcsv3.csv') 

У меня нет ошибок, но регулярное выражение также не работает. Его эта линия пыталась выяснить.

df['env'].replace(to_replace='[^0-9]+', value=' ',regex=True) 
+0

Попробуйте 'df ['env']. str.replace ('[^ 0-9] +', '')' – EdChum

+0

все еще не меняет столбец – Anekdotin

ответ

2

Может быть, вы можете использовать str.replacer'[^0-9.]+', как EdChum предложил - только попробовать добавить fullstop . и, возможно, помочь r и выход добраться до оригинального df['env'] (может быть, вы забыли его):

print df['env'] 
0   ex 1004.242 
1 ex erewrwn 1004.242 
2   wqwe 1004.242 
Name: env, dtype: object 

df['env'] = df['env'].str.replace(r'[^0-9.]+', '') 
print df['env'] 
0 1004.242 
1 1004.242 
2 1004.242 
Name: env, dtype: object 

Или может быть, вы можете использование:

df['env'] = df['env'].str.replace(r'[^\d*\.?\d+]', '') 
print df['env'] 
0 1004.242 
1 1004.242 
2 1004.242 
Name: env, dtype: object 
+0

Он печатает правильно, но не сохраняет в csv так, как он печатает? – Anekdotin

+0

Интересно - вы проверяете 'df ['env'] = df ['env']. Str.replace (r '[^ \ d * \.? \ D +]', '')' и 'print df' – jezrael

+0

Спасибо, сэр :) – Anekdotin