我正在尝试使用Pandas Series.shift()
来操纵pandas列,认为它比Pandas.Groupby
快得多。我正在寻找pandas groupby的替代方案的原因是因为我的数据有~700K rows
并且循环遍历每个组以执行列操作需要花费大量时间。数据片段如下所示。我的功能如下:
def func1(x):
blck_list = [
'b_9:00AM to 10:00AM',
'c_10:00AM to 11:00AM',
'd_11:00AM to 12:00PM'
]
if x["Row_ID"].shift(-1) == x["Row_ID"]:
for i in blck_list:
if x[i] != 0:
x[i] = x[i] - 1
return x
temp = func1(df)
数据如下:
df=
Row_ID b_9:00AM to 10:00AM c_10:00AM to 11:00AM d_11:00AM to 12:00PM
1-1000156 0 0 0
1-1000156 0 0 0
1-1000156 0 0 0
1-1000CY4 4 0 3
1-1000CY4 5 0 0
1-1000CY4 0 1 3
1-1000CY4 0 2 4
1-1000GH4 2 1 7
1-1000GH4 0 2 0
1-1000K1A 0 0 0
1-1000OZ1 1 0 0
1-1000OZ1 1 0 0
1-10012IB 0 0 0
1-10012IB 0 0 0
1-10012IB 0 0 0
我想要做的就是从列中减去1,其中Row_ID
的行0
不是Pandas.apply()
。我的函数产生以下错误:
ValueError:系列的真值是不明确的。使用a.empty, a.bool(),a.item(),a.any()或a.all()。
如果我使用temp = df_pivot.apply(func1, axis=1)
方法来调用ie。Series.shift()
我会收到以下错误:
属性错误:("' str'对象没有属性' shift'",'发生于 索引567517')
这里使用http://localhost:500/XXX/getXXX?currentPage=-1&numPerPage=4
方法的正确方法是什么。有没有其他替代方法来解决这个问题。