我在Pandas数据框中有一列数据,格式为Bxxxx-xx-xx-xx.y。我只需要第一部分(Bxxxx)。如何分割数据?另外,我在同一列中有BSxxxx-xx-xx-xx格式的数据,我想使用regex ='^ BS'命令删除该数据(由于某些原因,它不起作用)。在这方面的任何帮助将不胜感激。顺便说一句,我正在使用df.filter命令。
答案 0 :(得分:0)
您可以定义一个函数,在其中将Bxxxx-xx-xx-xx.y视为字符串,并仅提取前5个索引。
>>> def edit_entry(x):
... return (str(x)[:5])
>>> df['Column_name'].apply(edit_entry)
答案 1 :(得分:0)
单线解决方案是:
df["column_name"] = df["column_name"].apply(lambda x: x[:5])
答案 2 :(得分:0)
请考虑以下示例:
df = pd.DataFrame({
'col':['B123-34-gd-op','BS01010-9090-00s00','B000003-3frdef4-gdi-ortp','B1263423-304-gdcd-op','Bfoo3-poo-plld-opo', 'BSfewf-sfdsd-cvc']
})
print(df)
输出:
col
0 B123-34-gd-op
1 BS01010-9090-00s00
2 B000003-3frdef4-gdi-ortp
3 B1263423-304-gdcd-op
4 Bfoo3-poo-plld-opo
5 BSfewf-sfdsd-cvc
现在,我们要做两个任务:
考虑以下使用startswith()的代码:
df[~df.col.str.startswith('BS')].col.str.split('-').str[0]
输出:
0 B123
2 B000003
3 B1263423
4 Bfoo3
Name: col, dtype: object
故障:
df[~df.col.str.startswith('BS')]
给我们所有不以BS
开头的字符串。接下来,我们使用-
拆分这些字符串,并使用.col.str.split('-').str[0]
进行第一部分。
答案 3 :(得分:0)
这应该有效。
df[df.col1.apply(lambda x: x.split("-")[0][0:2]!="BS")].col1.apply(lambda x: x.split("-")[0])