Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在数据框中按列添加值_Python_Pandas - Fatal编程技术网

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]})])