如何基于开始于更新熊猫单元格值

时间:2020-10-09 16:35:15

标签: python pandas loops

我有一个数据框为:

a = {'TXI':  ['TXI|GS|-4.08|ABCD', 'TXI|TX|0', 'TXI|SP|7.06|ABCD']}
a = pd.DataFrame (a, columns = ['TXI']) 

我试图根据开头的开头删除最后5个字符,以得到类似b的结果:

b = {'TXI':  ['TXI|GS|-4.08', 'TXI|TX|0', 'TXI|SP|7.06']}
b = pd.DataFrame (b, columns = ['TXI'])

我在下面尝试的代码不会更新数据框。哪里错了?

for i in a.TXI:
    if not i.startswith('TXI|TX'):
        i = i[:-5]

2 个答案:

答案 0 :(得分:0)

您可以通过分配并应用来实现:

a = a.assign(TXI = lambda x: x['TXI'].apply(lambda s: s[:-5] if s.startswith('TXI|TX') else s ))

结果将是:

                 TXI
0  TXI|GS|-4.08|ABCD
1                TXI
2   TXI|SP|7.06|ABCD

答案 1 :(得分:0)

请使用where函数 enter image description here

a.TXI.where(a.TXI.str.startswith('TXI|TX'), a.TXI.str[:-5])

0    TXI|GS|-4.08
1        TXI|TX|0
2     TXI|SP|7.06