我在pandas中有一个数据框,我想在其中删除特定字符后的所有内容。
到目前为止,我已经使用了split函数,该函数可用于1列。
df3['defending_marking'] = df3['defending_marking'].apply(lambda x: x.split('+')[0])
我想在所有使用fx的列上执行此操作。 iloc
df3.iloc[:,:] = df3.iloc[:,:].apply(lambda x: x.split('+')[0])
我刚得到一个错误。
你能帮忙吗?
谢谢!
答案 0 :(得分:1)
第一个,您使用Series.apply
,其中x
是系列/列的每个字符串。 split
直接应用于每个字符串,因此可以正常工作。在第二个上,您使用dataframe.apply
,其中x
是数据帧的每一列(即系列)。现在,split
已应用于每个系列,因此失败了。
在2n 1时,您需要按以下方式致电str.split
df3 = df3.apply(lambda x: x.str.split('+').str[0])
当您使用split
仅选择第一部分时,添加选项n=1
以在首次发现之后停止拆分,这将使代码运行更快
df3 = df3.apply(lambda x: x.str.split('+', n=1).str[0])
答案 1 :(得分:0)
您不需要传递[:,:]。您应该在apply函数中使用axis = 1将每一列一一传递给lambda函数,然后将其重新分配回同一数据帧。
df3 = df3.apply(lambda x: x.str.split('+')[0], axis = 1)