簡體   English   中英

將數據填充到數據框python

[英]fill data to dataframe python

是否可以添加未在數據框中顯示的其他小時並將其值設置為0?

+---+------+--------------+<br>
| hr|counts|           app|<br>
+---+------+--------------+<br>
| 02|     1|         "DNS"|<br>
| 13|     2|         "DNS"|<br>
+---+------+--------------+<br>

我希望它成為

+---+------+--------------+<br>
| hr|counts|           app|<br>
+---+------+--------------+<br>
| 00|     0|         "DNS"|<br>
| 01|     0|         "DNS"|<br>
| 02|     1|         "DNS"|<br> <---- new
| 03|     0|         "DNS"|<br>
| 04|     0|         "DNS"|<br>
| 05|     0|         "DNS"|<br>
           .<br>
           .<br>
| 11|     0|         "DNS"|<br>
| 12|     0|         "DNS"|<br>
| 13|     2|         "DNS"|<br> <---- new
| 14|     0|         "DNS"|<br>
| 15|     0|         "DNS"|<br>
| 16|     0|         "DNS"|<br>
           .<br>
           .<br>
| 22|     0|         "DNS"|<br>
| 23|     0|         "DNS"|<br>
+---+------+--------------+<br>

dtypes:
計數float64
應用程式物件
dtype:對象

這是使用set_indexreindex的一種方法

In [4971]: df.set_index('hr').reindex(range(24)).fillna(0).assign(app='DNS').reset_index()
Out[4971]:
    hr  counts  app
0    0     0.0  DNS
1    1     0.0  DNS
2    2     1.0  DNS
3    3     0.0  DNS
4    4     0.0  DNS
5    5     0.0  DNS
6    6     0.0  DNS
7    7     0.0  DNS
8    8     0.0  DNS
9    9     0.0  DNS
10  10     0.0  DNS
11  11     0.0  DNS
12  12     0.0  DNS
13  13     2.0  DNS
14  14     0.0  DNS
15  15     0.0  DNS
16  16     0.0  DNS
17  17     0.0  DNS
18  18     0.0  DNS
19  19     0.0  DNS
20  20     0.0  DNS
21  21     0.0  DNS
22  22     0.0  DNS
23  23     0.0  DNS

細節

In [4954]: df
Out[4954]:
   hr  counts  app
0   2       1  DNS
1  13       2  DNS

腳步

為簡潔起見,僅顯示前5行

In [4974]: df.set_index('hr').reindex(range(24)).head()
Out[4974]:
    counts  app
hr
0      NaN  NaN
1      NaN  NaN
2      1.0  DNS
3      NaN  NaN
4      NaN  NaN

In [4975]: df.set_index('hr').reindex(range(24)).fillna(0).head()
Out[4975]:
    counts  app
hr
0      0.0    0
1      0.0    0
2      1.0  DNS
3      0.0    0
4      0.0    0

In [4976]: df.set_index('hr').reindex(range(24)).fillna(0).assign(app='DNS').head()
Out[4976]:
    counts  app
hr
0      0.0  DNS
1      0.0  DNS
2      1.0  DNS
3      0.0  DNS
4      0.0  DNS

編輯

但是,如果由於尾隨零而使您的hr列為字符串/對象類型,請使用自定義格式的范圍索引hrs

In [5006]: df
Out[5006]:
   hr  counts  app
0  02       1  DNS
1  13       2  DNS

In [5007]: hrs = map('{:02d}'.format, range(24))

In [5008]: df.set_index('hr').reindex(hrs).fillna(0).assign(app='DNS').reset_index()
Out[5008]:
    hr  counts  app
0   00     0.0  DNS
1   01     0.0  DNS
2   02     1.0  DNS
3   03     0.0  DNS
4   04     0.0  DNS
5   05     0.0  DNS
6   06     0.0  DNS
7   07     0.0  DNS
8   08     0.0  DNS
9   09     0.0  DNS
10  10     0.0  DNS
11  11     0.0  DNS
12  12     0.0  DNS
13  13     2.0  DNS
14  14     0.0  DNS
15  15     0.0  DNS
16  16     0.0  DNS
17  17     0.0  DNS
18  18     0.0  DNS
19  19     0.0  DNS
20  20     0.0  DNS
21  21     0.0  DNS
22  22     0.0  DNS
23  23     0.0  DNS

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM