查找df列是否以一个值开始,并根据该值剥离或设置为none



我是pandas的新手,想知道我们是否可以写一行代码来检查并使用lambda转换列。

pandas列包含用PL和TM约束的值。

这个想法是创建函数转换器,如果"PL123",则从列中剥离PL;如果"TM123",则设置为缺失

提前感谢您的帮助!!!!

您可以使用panda替换列中的文本,也可以根据文本设置另一列的值。例如:

df = pd.DataFrame({'values': ['PL123', 'PL234', 'TM123', 'TM234']})
df.loc[df['values'] == 'PL123', 'values'] = '123'
df.loc[df['values'] == 'TM123', 'values'] = 'missing'
df['new_col'] = ''
df.loc[df['values'].str.startswith('PL'), 'new_col'] = df['values']
df['new_col'] = df['new_col'].str.replace('PL', '')
print(df)
#     values new_col
# 0      123        
# 1    PL234     234
# 2  missing        
# 3    TM234        
df["your_col"].apply(lambda x: "123" if x=="PL123" else (None if x=="TM123" else x))

尝试:

如果有什么不同的话,那就是startswith:

df['column_name'].map(lambda x: '123' if x.startswith('PL') else "missing")

另一种情况是,如果您正在列中的任何位置查找PL,并希望将其转换为123,而将其他任何内容转换为missing,则可以尝试str.contains

df['values'].apply(lambda x: '123' if 'PL' in x else "missing")
sort = lambda x: x[2:] if 'PL' in x else None
record1 = 'PL123'
record2 = 'TM123'
print(sort(record1)) #Test 1: '123'
print(sort(record2)) #Test 2: None
df = pd.DataFrame({'values': ['PL123', 'PL234', 'TM123', 'TM234']})
data = list(df['values']) # Converts records under 'values' column into 
# a list so contents can be post processed by 
# lambda function
for ele in data:
print(sort(ele)) #Test 3: '123', '123', None, None

最新更新