如何根据 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 |
答案 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