2024-09-25 00:28:26 发布
网友
我想从数据框中删除最后一个下划线之后的所有字符串。如果我在dataframe中查看我的数据
AA_XX, AAA_BB_XX, AA_BB_XYX, AA_A_B_YXX
我想得到这个结果
AA, AAA_BB, AA_BB, AA_A_B
pd.DataFrame({'col': ['AA_XX', 'AAA_BB_XX', 'AA_BB_XYX', 'AA_A_B_YXX']})['col'].apply(lambda r: '_'.join(r.split('_')[:-1]))
解释:
df = pd.DataFrame({'col': ['AA_XX', 'AAA_BB_XX', 'AA_BB_XYX', 'AA_A_B_YXX']})
创造
col 0 AA_XX 1 AAA_BB_XX 2 AA_BB_XYX 3 AA_A_B_YXX
使用“应用”循环浏览要编辑的列。 我在_处断开字符串,然后连接所有部分,最后一部分在_
_
df['col'] = df['col'].apply(lambda r: '_'.join(r.split('_')[:-1])) print(df)
结果:
col 0 AA 1 AAA_BB 2 AA_BB 3 AA_A_B
如果数据集包含像AA这样的值(不带下划线的值)。 像这样改变lambda
AA
df = pd.DataFrame({'col': ['AA_XX', 'AAA_BB_XX', 'AA_BB_XYX', 'AA_A_B_YXX', 'AA']}) df['col'] = df['col'].apply(lambda r: '_'.join(r.split('_')[:-1]) if len(r.split('_')) > 1 else r) print(df)
这是另一种方法
import pandas as pd data = {'s': ['AA_XX', 'AAA_BB_XX', 'AA_BB_XYX', 'AA_A_B_YXX']} df = pd.DataFrame(data) def cond1(s): temp_s = s.split('_') temp_len = len(temp_s) if len(temp_s) == 1: return temp_s else: return temp_s[:len(temp_s)-1] df['result'] = df['s'].apply(cond1)
您只需使用^{}和^{}即可完成此操作:
In [2381]: df Out[2381]: col1 0 AA_XX 1 AAA_BB_XX 2 AA_BB_XYX 3 AA_A_B_YXX In [2386]: df['col1'] = df['col1'].str.split('_').str[:-1].str.join('_') In [2387]: df Out[2387]: col1 0 AA 1 AAA_BB 2 AA_BB 3 AA_A_B
解释:
创造
使用“应用”循环浏览要编辑的列。
我在
_
处断开字符串,然后连接所有部分,最后一部分在_
结果:
如果数据集包含像
AA
这样的值(不带下划线的值)。像这样改变lambda
这是另一种方法
您只需使用^{} 和^{} 即可完成此操作:
相关问题 更多 >
编程相关推荐