Python pandas从列中删除最后一个字符串/符号

时间:2016-02-16 19:35:59

标签: python csv pandas

我有一个大的csv,其列包含前面带零的数字,结尾有一个。

看起来像..

TC_NUM
0101.0001.
0101.0002.
0101.0003.

我希望它看起来像..

TC_NUM

    0101.0001
    0101.0002
    0101.0003

我的代码:

df3['TC_NUM'] = df3['TC_NUM'].astype(str).str[:-1]

我的代码错误输出..

TC_NUM
101.0001
101.0002
101.0003
101.0004
101.0005

使用edchums修复..

df4 = pd.read_csv('output2.csv', dtype=object, index_col=0)
print df4.head()
df4['TC_NUM'] = df4['TC_NUM'].str[:-1]

打印正确..

0                 dialog_testcase_0101.0001_greeting.xml       0101.0001
1                 dialog_testcase_0101.0002_greeting.xml       0101.0002
2                 dialog_testcase_0101.0003_greeting.xml       0101.0003
3                 dialog_testcase_0101.0004_greeting.xml       0101.0004
4                 dialog_testcase_0101.0005_greeting.xml       0101.0005

但使用此

df4['TC_NUM'] = df4['TC_NUM'].str[:-1]
print df4.head
df4.to_csv('output2.csv', dtype=object,index_col=0)

生成的csv输出为..

0   dialog_testcase_0101.0001_greeting.xml  101.0001
1   dialog_testcase_0101.0002_greeting.xml  101.0002
2   dialog_testcase_0101.0003_greeting.xml  101.0003
3   dialog_testcase_0101.0004_greeting.xml  101.0004

因此错过了开头0

2 个答案:

答案 0 :(得分:3)

您需要将其作为str阅读,然后您可以对其进行切片:

In [11]:
t="""TC_NUM
0101.0001.
0101.0002.
0101.0003."""
df = pd.read_csv(io.StringIO(t), dtype=object)
df

Out[11]:
       TC_NUM
0  0101.0001.
1  0101.0002.
2  0101.0003.

In [13]:
df['TC_NUM'] = df['TC_NUM'].str[:-1]
df

Out[13]:
      TC_NUM
0  0101.0001
1  0101.0002
2  0101.0003

答案 1 :(得分:0)

经过多次编码和键盘攻击后,我终于弄明白了。输出打印时代码是正确的,但是开放式办公室自然地从列中删除前导零。解决方案是将数字放在'''如此开放的办公室将完好无损。谢谢大家的帮助!