如何根据一些规则拆分panda列,并汇总值

  • 本文关键字:panda 拆分 何根 规则 pandas
  • 更新时间 :
  • 英文 :


我有一些列是像这样的值2/300/3,但我想要一些这个值,在本例中是2+300+3=305。为了实现这个目标,我使用命令

for i in range(len(df.col)):
df.col.iloc[i]=sum([float(j) for j in df.col.iloc[i].split("|")])

这个数据帧的长度很大,这就是为什么上面的命令非常耗时。有没有其他方法可以在没有循环的情况下完成相同的操作?注意:"/"不是固定的,在某些情况下它不存在

replaceeval可以完成的工作

import pandas as pd
data = ["2/300/3" , "5/300/3" , "3 50 3"]
df =pd.DataFrame(data, columns=["data"])
df["total_sum"] = df["data"].str.replace('[/ |" "]','+').apply(pd.eval)

输出:

data    total_sum
0   2/300/3 305
1   5/300/3 308
2   3 50 3  56

您还可以使用str.split并应用

import pandas as pd
data = ["2/300/3" , "5/300/3" , "3/50/3"]
df =pd.DataFrame(data, columns=["data"])
df.data = df.data.str.split('/').apply(lambda x: sum(map(int,x)))

最新更新