拆分多列

时间:2019-11-26 19:26:23

标签: python pandas

我在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])

我刚得到一个错误。

你能帮忙吗?

谢谢!

2 个答案:

答案 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)