尝试从熊猫中分组数据的子组中的新列,查找功能问题

时间:2019-07-02 03:29:07

标签: python python-3.x pandas dataframe

我正在尝试从“数据”子组(service_id)中写入新列并获取“计数”值。

我的数据:

count | service_id | date  
  2  ------------        8  -------     15-11  
  5  ------------        2    -------   15-11  
  4         ------------ 5 -------      15-11  
  3        ------------  3    -------   16-11  
  2         ------------ 8   -------    16-11  
  1    ------------      2     -------  17-11  

所需的输出:

--date--|---2---|---3---|---5---|---8-  ##new headers are the subgroups 'service_id'  
-15-11----5---------------4-------2  
-16-11-------------3---------------2  
-17-11----1------------------------- 

对不起,我不知道如何在此处编写表格。

我尝试过:

  • 将所有唯一的service_id列出到变量中。 a = ['2','3','5,'8']
  • 列出变量的所有唯一日期。 b = ['15 -11','16-11','17-11']

然后是两个for循环和if循环。

for num, row in df7.iterrows():
    for elem in b:
        if row['date'] == elem:
            aux1 = str(elem)
            df9.loc[num].data = aux1
            for memb in a:
                if row['service_id'] == memb:
                    aux = str(memb)
                    df9.loc[num].aux = row['count']

我发现此代码有一些错误,我认为我不了解如何使用loc函数。

这是输出错误:

  

KeyError:“标签[0]不在[索引]中”

但是任何其他解决方案都可以使用。谢谢!

1 个答案:

答案 0 :(得分:0)

我试图这样获得所需的输出。

grouped = df.groupby('service_id')
new_df = pd.DataFrame()
​
for g, n in grouped:
    g_i = grouped.get_group(g)
    date_ = g_i.date

    for i, e in enumerate(date_):
        new_df.loc[e, 'date'] = e
        new_df.loc[e, g] = list(g_i.count1)[i]
​
new_df = new_df.reset_index(drop=True)
print (new_df)

    date    2    3    5    8
0  15-11  5.0  NaN  4.0  2.0
1  17-11  1.0  NaN  NaN  NaN
2  16-11  NaN  3.0  NaN  2.0