2016-06-10 3 views
1

Я пытаюсь использовать, если заявление для изменения значений в столбце, если длина больше чем хПанды изменить значение столбца, если больше лена

Мои данные CSV ..

ID   Test_Case           TC_NUM 
14581,dialog_testcase_4000.0134_mvp_not_understood-inprogress.xml,4000.0134 
14582,dialog_testcase_4000.0135_mvp_not_understood-inprogress.xml,4000.0135 
14583,dialog_testcase_4000.0136_mvp_not_understood-inprogress.xml,4000.0136 
14584,dialog_testcase_4000.0137_mvp_not_understood_6.2.0-inprogress.xml,4000.01376.2.0 
14585,dialog_testcase_4000.0138_mvp_not_understood_6.2.0-inprogress.xml,4000.01386.2.0 

Я хочу:

ID   Test_Case           TC_NUM 
14581,dialog_testcase_4000.0134_mvp_not_understood-inprogress.xml,4000.0134 
14582,dialog_testcase_4000.0135_mvp_not_understood-inprogress.xml,4000.0135 
14583,dialog_testcase_4000.0136_mvp_not_understood-inprogress.xml,4000.0136 
14584,dialog_testcase_4000.0137_mvp_not_understood_6.2.0-inprogress.xml,4000.0137 
14585,dialog_testcase_4000.0138_mvp_not_understood_6.2.0-inprogress.xml,4000.0138 

Мой текущий код может извлечь некоторые из правых колонках, но путает, если дополнительные номера находятся там.

df1['TC_NUM'] = df1['TC_NUM'].str.replace(r'[^0-9.]+', '') 

df1['TC_NUM'] = df1['TC_NUM'].str[:-1] 

Моя мысль/попытка использовать инструкцию if, чтобы исправить это.

if dfidtcnum(len['TC_NUM'] > 12): 
    print "True" 
+0

'DF1 [ 'TC_NUM'] = df1 [ 'TC_NUM'] str.replace (г '\ [.^\] {1, 3} \. \ D * $ ',' ') 'может работать для того, что вы здесь показали, но это не общее решение. Пока число между второй и третьей точками составляет от 1 до 3 цифр, оно будет работать. – Abdou

ответ

3

IIUC вы можете использовать mask:..

print (df.TC_NUM.str.len() > 9) 
0 False 
1 False 
2 False 
3  True 
4  True 
Name: TC_NUM, dtype: bool 


df['TC_NUM'] = df.TC_NUM.mask(df.TC_NUM.str.len() > 9, df.TC_NUM.str[:-5]) 
print (df) 
     ID           Test_Case  TC_NUM 
0 14581 dialog_testcase_4000.0134_mvp_not_understood-i... 4000.0134 
1 14582 dialog_testcase_4000.0135_mvp_not_understood-i... 4000.0135 
2 14583 dialog_testcase_4000.0136_mvp_not_understood-i... 4000.0136 
3 14584 dialog_testcase_4000.0137_mvp_not_understood_6... 4000.0137 
4 14585 dialog_testcase_4000.0138_mvp_not_understood_6... 4000.0138 
+0

Работал отлично спасибо jezrael – Anekdotin