首页 > 解决方案 > 将行插入到 Dataframe 的特定索引

问题描述

我想将特定行插入数据框。数据框包含 id、hourname 和 count 列。我想在没有数据的小时(0-23)中插入行。这是我的数据框,

      index  id                          hourname  count
           0  a                               0         1
           1  a                               4         1
           2  a                               14        1
           3  a                               15        3
           4  a                               17        1
           5  a                               20        1

这就是我想要实现的

      index  id                          hourname  count
           0  a                               0         1
           1  a                               1         0
           2  a                               2         0
           3  a                               3         0
           4  a                               4         1
           5  a                               5         0
           6  a                               6         0 
           7  a                               7         0
           8  a                               8         0
           9  a                               9         0
           10 a                               10        0
           11 a                               11        0
           12 a                               12        0
           13 a                               13        0
           14 a                               14        1
           15 a                               15        3
           16 a                               16        0
           17 a                               17        1
           18 a                               18        0
           19 a                               19        0
           20 a                               20        1
           21 a                               21        0
           22 a                               22        0
           23 a                               23        0

我从 csv 文件中获取数据,这是文件内容(文件名在源代码中为 a.csv)

,id,hourname,count
0,a,0,1
1,a,4,1
2,a,14,1
3,a,15,3
4,a,17,1
5,a,20,1

这是我的源代码

import csv
import pandas as pd
import numpy as np

result4 = pd.read_csv("a.csv")
print(result4)
for i in range(0,23):
    if result4.loc[i, 'hourname'] != i:
        line = pd.DataFrame({"id": "a", "hourname": i, "count":0}, index=[i])
        result4 = result4.append(line, ignore_index=False)
    result4 = result4.sort_index().reset_index(drop=True)
print(result4)

标签: pythonpandasdataframe

解决方案


尝试,

hours_df = pd.DataFrame({'hourname': range(0,23)})
df = your_df.merge(hours_df, how='right', on='hourname')

这会给你所有的时间。然后填写缺失的id并计数

df['id'] = df['id'].ffill()
df['count'] = df['count'].fillna(0)

推荐阅读