在对数据帧进行分组之后,我正在努力处理一个序列和,我希望有人能帮我想出一个主意。 基本上,我在下面的例子中,我需要有每个“材料”的总和。 基本上材料“ABC”应该给我2,和所有其他因为他们只有一个符号操作将有相同的值。你知道吗
import numpy as np
import pandas as pd
df = pd.DataFrame({
"Material" : ["M-12", "H4-LAMPE", "M-12", "H4-LAMPE",
"ABC" , "H4-LAMPE", "ABC", "ABC"] ,
"Quantity" : [6, 1, 3, 5, 1, 1, 10, 9],
"TYPE": ["+", "-", "+", "-", "+", "-", "+", "-"]})
df.groupby(['Material', "Quantity"], as_index=False).count()
listX = []
for item in df["TYPE"]:
if item == "+":
listX.append(1)
elif item == "-":
listX.append(-1)
else:
pass
df["Sign"] = lista
df["MovementsQty"] = df["Quantity"]*df["Sign"]
#df = df.groupby(["Material", "TYPE", "Quantity1"]).sum()
df1 = df.groupby(["Material", "TYPE"]).sum()
df1.drop(columns=["Quantity", "Sign"], inplace=True)
print(df1)
结果是:
期望的结果是:
我试着再总结一遍,换个角度考虑,但到目前为止我还没有成功,我想我需要一些帮助。你知道吗
非常感谢你的帮助
下面是另一个例子(相当类似于coldspeed)。你知道吗
退货:
map
和numpy.sign
把
Quantity * TYPE
加起来,然后算出符号。你知道吗你在正确的轨道上。我试着改进你的代码。只需使用“Type”来确定和分配符号,使用
np.where
,执行groupby
和sum
,然后根据结果重新计算“Type”列。你知道吗或者,您可以通过两个
groupby
调用来实现这一点:相关问题 更多 >
编程相关推荐