【发布时间】:2019-08-02 03:50:45
【问题描述】:
我有一个数据集,其中包含以下列:周、商店、商品编号和价格。我还有一个唯一编号数组,它们等于项目编号,但顺序不同。 我想根据这些唯一数字向该数据集添加新列。首先,我需要按周对这个数据集进行分组并购物。然后在特定的一周和特定的商店中,我需要找到一个等于新列名的项目编号(唯一编号数组中的元素)。如果没有这样的字段,则填写 null。 然后我应该用这个项目编号的价格填写特定一周和特定商店的所有字段。
这是我尝试过的一些代码,但运行速度很慢,因为行数非常大。
#real dataset
data2
weeks = data2['Week'].unique()
for k in range(len(Unique_number)):
for i in range(len(weeks)):
temp_array = data2.loc[data2["Week"] == weeks[i]]
stores = temp_array['Shop'].unique()
for j in range(len(stores)):
temp_array2 = temp_array.loc[data2["Shop"] == stores[j]]
price = temp_array2.loc[temp_array2["Item number"] == Unique_number[k], "Price"]
if (price.empty):
price = 0
else:
price = price.values[0]
data2.loc[(data2["Week"] == weeks[i]) & (data2["Shop"] == stores[j]),Unique_number[k]] = price
我想要这样的东西
Unique_numbers = [0,1,2,3]
dataframe before
week; shop; Item number; price
1 1 0 2
1 2 1 3
2 1 3 4
2 1 2 5
3 4 1 6
3 1 2 7
dataframe after
week; shop; Item number; price; 0; 1; 2; 3
1 1 0 2 2 0 0 0
1 2 1 3 0 3 0 0
2 1 3 4 0 0 5 4
2 1 2 5 0 0 5 4
3 4 1 6 0 6 0 0
3 1 2 7 0 0 7 0
【问题讨论】:
-
恐怕我根本不理解您的输出。输入值到输出值的映射是什么?
2 1 3 4和2 1 2 5如何映射到相同的输出0 0 5 4?