我正在编写一个算法,用于处理工作中的客户进行一些数据分析,我按用户ID对数据进行分组,作为我的级别1,然后按月份对我的级别2进行分组。
然后,我正在逐个用户地对数据进行一些处理工作,其中涉及每月的时间序列。
我下面的代码做的正是我需要它做的,保存到最后一步。
- 如何在输出中使用经过处理的时间序列数据重载原始数据?**
tempDF1 = pd.read_csv('data.csv', index_col=[0,1], parse_dates=[1], thousands=',')
tempDF1["Average"] = 0
tempDF1["Score"] = 0
for id, df in tempDF1.groupby(level=0):
for date in df.loc[id].index:
df.loc[(id,date),"Average"] = df.loc[(id,date)].Purchased/df.loc[(id,date)].Count
df.loc[(id,date),"Score"] = df.loc[(id,date)].Count/10*log(df.loc[(id,date)].Average, 10)
try:
list(df.loc[(id,"2021-01-01",),:])
except:
df.loc[(id, "2021-01-01",),:] = 0
try:
list(df.loc[(id,"2023-06-01",),:])
except:
df.loc[(id, "2023-06-01",),:] = 0
resampleDF = df.loc[id].resample('M', closed="left").mean().fillna(0)
print(resampleDF)
tempDF1.loc[id].replace(resampleDF, inplace=True)
print(tempDF1)
下面是上面代码的示例输出。* * resampleDF是针对ID 1785的,我正在尝试替换整个级别;二级索引,列中的数据,所有内容都是批发的。我需要将resampleDF放入tempDF1**中,以代替1785(以及其余部分,但这应该通过上面的循环来完成。
- 重采样DF**
| 月|计数|购买|平均值|得分|
| - -----|- -----|- -----|- -----|- -----|
| 2021 - 01 - 31 - 2021 - 2021 - 01 - 31| 0.0| 0.0| 0.0| 0.000000|
| 2021 - 02 - 28 2021 - 02 - 28 2021 - 02 - 28| 0.0| 0.0| 0.0| 0.000000|
| 2021 - 03 - 31 - 2021 - 2021 - 2021 - 2021 - 2022 - 2023 - 2023 - 2023 - 2023 - 2023 - 2023 - 2023 - 2023 - 2023 - 2023 - 2023 - 2023 - 2023 - 2023 - 2023 - 2023 - 2023 - 2023 - 2023 - 2023 - 2023 - 2023 - 2023 - 2023 - 2023 - 2023 - 2023 - 2023 - 2023 - 2023 - 2023 - 2023 - 2023 - 2023 - 2023 - 2023 - 2023 - 2023 - 2023 - 2023 - 2023 - 2023 - 2023| 0.0| 0.0| 0.0| 0.000000|
| 2021 - 04 - 30 - 2021 - 04 - 30| 0.0| 0.0| 0.0| 0.000000|
| 2021 - 05 - 31 - 2021 - 2021 - 05 - 31| 0.0| 0.0| 0.0| 0.000000|
| 2021 - 06 - 30| 1.0|九九九九|九九九九|0.399996|
| 2021 - 07 - 31 - 2021 - 07 - 31 - 2021 - 07 - 21| 0.0| 0.0| 0.0| 0.000000|
| 2021 - 08 - 31 - 2021 - 2021 - 08 - 31 - 2021 - 2021 - 2021 - 2021 - 2022 - 2022 - 2022 - 2022 - 2022 - 2022 - 2022 - 2022 - 2022 - 2022 - 2022 - 2022 - 2022 - 2022 - 2022 - 2022 - 2022 - 2022 - 2022 - 2022 - 2022 - 2022 - 2022 - 2022 - 2022 - 2022 - 2022 - 2022 - 2022 - 2022 - 2022 - 2022 - 2022 - 2022 - 2022 - 2022 - 2022 - 2022 - 2022 - 2022 - 202| 0.0| 0.0| 0.0| 0.000000|
| 2021 - 09 - 30 - 01 - 01| 0.0| 0.0| 0.0| 0.000000|
| 2021 - 10 - 31 - 2021 - 10 - 31 - 2021 - 10 - 31 - 2021 - 10 - 21| 2.0|二十点|十点|0.20万|
| 2021 - 11 - 30 - 2021 - 11 - 30 - 2021 - 11 - 30 - 2021 - 11 - 30 - 2021 - 11 - 21 - 21 - 21 - 21| 0.0| 0.0| 0.0| 0.000000|
- tempDF1**
| 用户id|月|计数|购买|平均值|得分|
| - -----|- -----|- -----|- -----|- -----|- -----|
| 一七八五|2021 - 06 - 01 2021 - 06 - 01 2021 - 06 - 01| 1|九九九九|0| 0|
| | 2021 - 10 - 01 - 01| 2|二十个|0| 0|
| 一八五七年|2021 - 06 - 01 2021 - 06 - 01 2021 - 06 - 01| 1|一百|0| 0|
| 一九五三年|2021 - 03 - 01 2021 - 03 - 01| 5个|二百五十|0| 0|
| 2023年|2021 - 09 - 01 2021 - 09 - 01| 5个|一千一百|0| 0|
| ......这是什么?||......这是什么?|......这是什么?|......这是什么?|......这是什么?|
| 18149| 2023 - 03 - 01| 1|三百|0| 0|
| 18169年|2023 - 03 - 01| 2|四十|0| 0|
| 18177年|2023 - 03 - 01| 2|一千一百|0| 0|
| 一八二一零|2023 - 03 - 01| 1|十个|0| 0|
| 18215| 2023 - 03 - 01| 2|一百一十|0| 0|
1条答案
按热度按时间gfttwv5a1#
使用您提供的 Dataframe :
以下是使用Pandas drop、assign和concat的一种方法: