根据条件拆分列值

时间:2021-07-04 12:43:55

标签: python pandas dataframe numpy

如何根据 Pandas 中的条件拆分列的值? 如果 A 中的值小于 5,我想将 B 列转换为 point(.) 之前的第一个拆分 例如,我有下表:

<头>
A B
2 ABC.DEF
2 ABC.DEF
8 ABC.DEF
8 ABC.DEF

应该改为

<头>
A B
2 ABC
2 ABC
8 ABC.DEF
8 ABC.DEF

3 个答案:

答案 0 :(得分:1)

试试:

m=df['A'].lt(5)
#your condition

最后:

df.loc[m,'B']=df.loc[m,'B'].str.split('.').str[0]

#import numpy as np
df['B']=np.where(m,df['B'].str.split('.').str[0],df['B'])

df 的输出:

    A   B
0   2   ABC
1   2   ABC
2   8   ABC.DEF
3   8   ABC.DEF

答案 1 :(得分:1)

您可以使用 where,将原始值替换为作为第二个参数提供的值,其中条件(作为第一个参数提供)为 False

df.B.where(df.A.ge(5), df.B.str.split('.').str[0], inplace=True)

df 将变成:

   A        B
0  2      ABC
1  2      ABC
2  8  ABC.DEF
3  8  ABC.DEF

答案 2 :(得分:0)

这是一种方法:

df.loc[df.A<5, 'B']=df.loc[df.A<5, 'B'].apply(lambda x: x.split('.')[0])

print(df)

输出:

   A        B
0  2      ABC
1  2      ABC
2  8  ABC.DEF
3  8  ABC.DEF
相关问题