将行插入到数据帧的特定索引

2024-10-03 13:16:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在数据框中插入特定的行。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)

Tags: 文件csv数据importiddataframeindex源代码
2条回答

我希望这能回答你的问题

import pandas as pd
x = [0, 4, 14, 15, 17, 20]
y = [1, 1, 1, 3, 1, 1]
k = list(range(0,24))
i = list(set(k) - set(x))
for itm in i:
    x.insert(itm,itm)
    y.insert(itm, 0)
data = {'id': len(x) * ['a'], 'hourname': x, 'count': y}
df = pd.DataFrame(data) 
print(df)

我只是创建了一个包含从0到23的整数的列表k,然后我得到了list xlist k之间的差作为list i。在这些之后,我通过list i将它的项添加到list x中,并在list y中相邻的标记处添加0

试试看

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)

相关问题 更多 >