Python 拆分多列

Python 拆分多列,python,pandas,Python,Pandas,我在pandas中有一个数据帧,我想删除特定字符后的所有内容 到目前为止,我已经使用了split函数,它在1列上工作 df3['defending_marking'] = df3['defending_marking'].apply(lambda x: x.split('+')[0]) 我想用fx在所有列上都这样做。伊洛克 df3.iloc[:,:] = df3.iloc[:,:].apply(lambda x: x.split('+')[0]) 我只是犯了个错误 你能帮忙吗 谢谢大家! 您

我在pandas中有一个数据帧,我想删除特定字符后的所有内容

到目前为止,我已经使用了split函数,它在1列上工作

df3['defending_marking'] = df3['defending_marking'].apply(lambda x: x.split('+')[0])
我想用fx在所有列上都这样做。伊洛克

df3.iloc[:,:] = df3.iloc[:,:].apply(lambda x: x.split('+')[0])
我只是犯了个错误

你能帮忙吗


谢谢大家!

您不需要通过[:,:]。您应该在应用函数中使用axis=1将每个列逐个传递给lambda函数,然后重新分配回同一数据帧

df3 = df3.apply(lambda x: x.str.split('+')[0], axis = 1)

在第一个选项中,使用
Series.apply
,其中
x
是序列/列的每个字符串
split
直接应用于每个字符串,因此工作正常。在第二种情况下,使用
dataframe.apply
,其中
x
是dataframe的每一列(即系列)。现在,
split
应用于每个系列,因此失败

在2nOne上,您需要调用
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])

有趣。你怎么把它写进代码里?我想不出你会把它放在哪里?df3=df3.apply(lambda x:x.str.split(+')[0],axis=1)谢谢!但是当我尝试使用它时,它只适用于1列,而忽略了其余的列很抱歉我应该提到数据集有29列18000行谢谢!但它似乎在运行代码,然后删除所有列中除1以外的所有行:/很抱歉我应该提到数据集有29列,共18000列rows@KasperHøxbroeJeppesen:我忘了
.str[0]
。我修好了。检查我编辑的答案:)