Python 如何在数据框中按列添加值
我有一个Python 如何在数据框中按列添加值,python,pandas,Python,Pandas,我有一个Dataframe,有三列store、hour、count。我面临的问题是一些商店缺少小时数,我希望它们是0 这就是dataframe的外观 # store_id hour count # 0 13 0 56 # 1 13 1 78 # 2 13 2 53 # 3 23 13 14 # 4 23 14
Dataframe
,有三列store、hour、count
。我面临的问题是一些商店缺少小时数
,我希望它们是0
这就是dataframe
的外观
# store_id hour count
# 0 13 0 56
# 1 13 1 78
# 2 13 2 53
# 3 23 13 14
# 4 23 14 13
正如您所看到的,对于id为13的存储
没有3-23小时的值,同样对于存储23,它也没有其他许多小时的值
我试图通过创建一个带有两列id
和count
的时态数据帧来解决这个问题,并执行右外连接
,但没有成功。如果每个组在小时
内没有重复,解决方案是:
试试这个:
all_hours = set(range(24))
for sid in set(df['store_id']):
misshours = list(all_hours - set(df['hour'][df['store_id'] == sid]))
nmiss = len(misshours)
df = pandas.concat([df, DataFrame({'store_id': nmiss * [sid], misshours, 'count': nmiss * [0]})])
print (df)
store_id hour count
0 13 0 56
1 13 1 78
2 13 2 53
3 13 3 0
4 13 4 0
5 13 5 0
6 13 6 0
7 13 7 0
8 13 8 0
9 13 9 0
10 13 10 0
11 13 11 0
12 13 12 0
13 13 13 0
14 13 14 0
15 13 15 0
16 13 16 0
17 13 17 0
18 13 18 0
19 13 19 0
20 13 20 0
21 13 21 0
22 13 22 0
23 23 0 0
24 23 1 0
25 23 2 0
26 23 3 0
27 23 4 0
28 23 5 0
29 23 6 0
30 23 7 0
31 23 8 0
32 23 9 0
33 23 10 0
34 23 11 0
35 23 12 0
36 23 13 14
37 23 14 0
38 23 15 0
39 23 16 0
40 23 17 0
41 23 18 0
42 23 19 0
43 23 20 0
44 23 21 0
45 23 22 0
all_hours = set(range(24))
for sid in set(df['store_id']):
misshours = list(all_hours - set(df['hour'][df['store_id'] == sid]))
nmiss = len(misshours)
df = pandas.concat([df, DataFrame({'store_id': nmiss * [sid], misshours, 'count': nmiss * [0]})])