如果长度大于x
,我试图使用if语句来更改列中的值我的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 :(得分: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