代码背景:
data=[['A',datetime(2024, 3, 4, 0, 0),1,'家电官方旗舰店'],
['A',datetime(2024, 3, 5, 0, 0),1,'家电官方旗舰店'],
['A',datetime(2024, 3, 6, 0, 0),1,'家电官方旗舰店'],
['A',datetime(2024, 3, 7, 0, 0),1,'家电官方旗舰店'],
['A',datetime(2024, 3, 8, 0, 0),1,'家电官方旗舰店'],
['A',datetime(2024, 3, 9, 0, 0),1,'家电官方旗舰店'],
['A',datetime(2024, 3, 10, 0, 0),1,'家电官方旗舰店'],
['B',datetime(2024, 3, 4, 0, 0),778,'旗舰店'],
['B',datetime(2024, 3, 5, 0, 0),678,'旗舰店'],
['B',datetime(2024, 3, 6, 0, 0),678,'旗舰店'],
['B',datetime(2024, 3, 7, 0, 0),678,'旗舰店'],
['B',datetime(2024, 3, 8, 0, 0),678,'旗舰店'],
['B',datetime(2024, 3, 9, 0, 0),678,'旗舰店'],
['B',datetime(2024, 3, 10, 0, 0),678,'旗舰店']]
data=pd.DataFrame(data,columns=[ 'itemId','date','discountePrice','shopName'])
print(data)
data0=data.groupby("itemId")["discountePrice"]
data=data.groupby("itemId")["discountePrice"].apply(list)
data=pd.DataFrame(data).reset_index()
display (data)
我需要按itemId聚合得到这样的效果:
首先我用
data=data.groupby("itemId")["discountePrice"].apply(list)
得到
请注意,这个是Series对象,如果要做后续操作,需要将其转化为DataFrame 一开始我的代码是这样的
data=pd.DataFrame(data).reset_index(inplace=True)
返回结果是None。
在这种情况下,inplace=True 参数的使用导致了 None 的输出。inplace=True 参数指示 reset_index() 方法在原始 DataFrame 上进行操作,而不是返回一个新的 DataFrame。因此,data DataFrame 在这种情况下已经被修改,而不是返回一个新的 DataFrame。
所以,当你执行 data=pd.DataFrame(data).reset_index(inplace=True) 时,会将 data DataFrame 重置索引并且修改原始的 data DataFrame,但是由于返回值为 None,你的 data 变量被重新赋值为 None,而不是新的 DataFrame。
如果你想要保留变量 data 作为新的 DataFrame,而不是在原始 DataFrame 上进行操作,可以这样写:
data = pd.DataFrame(data).reset_index()
这样,data 变量将会包含重置索引后的 DataFrame。
终于得到我想要的结果: