Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.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_For Loop_Dataframe_Group By - Fatal编程技术网

Python 遍历行并执行操作

Python 遍历行并执行操作,python,pandas,for-loop,dataframe,group-by,Python,Pandas,For Loop,Dataframe,Group By,我有一个熊猫数据框,如下所示 Date SKU Balance 0 1/1/2017 X1 8 1 1/1/2017 X2 45 2 1/1/2017 X1 47 3 1/1/2017 X2 16 4 2/1/2017 X1 14 5 2/1/2017 X2 67 6 2/1/2017

我有一个熊猫数据框,如下所示

    Date          SKU     Balance
0   1/1/2017        X1       8
1   1/1/2017        X2      45
2   1/1/2017        X1      47
3   1/1/2017        X2      16
4   2/1/2017        X1      14
5   2/1/2017        X2      67
6   2/1/2017        X2       9
8   2/1/2017        X1      66
9   2/1/2017        X1     158
我的第一个目标是生成每天过滤的多个数据帧

我为之编码

df_1stjan = df.query("Date == \"1/1/2017\"")
我得到了下面的结果

    Date          SKU     Balance
0   1/1/2017        X1       8
1   1/1/2017        X2      45
2   1/1/2017        X1      47
3   1/1/2017        X2      16
Date          SKU     Balance
0   1/1/2017        X1      55
1   1/1/2017        X2      61
我的第二个目标是按SKU进行分组,然后进行编码

df_1stjan_uSKU = df_1stjan.groupby(['SKU','Date'], \
                         as_index=False).agg({'Balance':'sum'})
我得到了下面的结果

    Date          SKU     Balance
0   1/1/2017        X1       8
1   1/1/2017        X2      45
2   1/1/2017        X1      47
3   1/1/2017        X2      16
Date          SKU     Balance
0   1/1/2017        X1      55
1   1/1/2017        X2      61
目前,我只能编写代码一次只为一个日期生成df

但我需要编写一个函数或循环,以便在2017年的所有日子里实现自动化

请注意,如果先执行此操作,则日期列具有字符串dtype

df_group = df.groupby(['Date', 'C1', 'C2', 'C3', 'SKU']).sum()
然后,您可以创建dfs,例如:

for date in set(df['Date']):
    df_date = df_group.loc[date].reset_index()
    # and do whatever with df_date, you can save them in a list for example
    # to access them later but maybe the df_group.loc[date].reset_index() is enough for what you need

我觉得你把事情弄得太复杂了。您已经基本解决了自己的问题,但我建议您在最初的
agg
之后进行索引

示例数据帧

    Balance Date    SKU
0   8   1/1/2017    X1
1   45  1/1/2017    X2
2   47  1/1/2017    X1
3   16  1/1/2017    X2
4   22  1/2/2017    X3
5   24  1/2/2017    X3
6   25  1/3/2017    X4
7   3   1/3/2017    X4 
groupby
agg

df1 = df.groupby(['Date', 'SKU'], as_index=False).agg({'Balance':'sum'})

    Date    SKU Balance
0   1/1/2017    X1  55
1   1/1/2017    X2  61
2   1/2/2017    X3  46
3   1/3/2017    X4  28
到日期时间
转换
日期

df1['Date'] = pd.to_datetime(df1.Date, format='%m/%d/%Y')
日期\u范围
包含您希望访问的所有日期

dr = pd.date_range('20170101','20170103')
loc
带每天访问切片的循环

for d in dr:
    print(df1.loc[df1.Date.isin([d])])

        Date SKU  Balance
0 2017-01-01  X1       55
1 2017-01-01  X2       61

        Date SKU  Balance
2 2017-01-02  X3       46

        Date SKU  Balance
3 2017-01-03  X4       28

你能告诉我df1应该是什么样子吗?该代码不适用于我。当然,我会编辑我的问题。我想我明白您的意图,但是我不认为示例数据中的任何示例会被聚合,因为
SKU
列中没有任何重叠条目。想要的输出在这里会非常有用。对不起,克里斯,我只提供了几个SKU,还有很多,但我无法显示所有SKU。事实上,每天都有多个库存库存。查询(“ActivityDate=\“2017-10-01\”)嗨,本,谢谢你的回答。然而,我无法实施它。我已经编辑了我的问题,请你检查一下是否可以帮忙。谢谢。@ahamemodoosa你现在找到了答案,真为你高兴:)哦,是的,我们能不能只写几行代码,在2017年的所有日子里实现自动化。如果我写这篇文章,我必须写365+1行代码谢谢你,克里斯,我真的很感谢你help@AhamedMoosa更新了我的答案,您只需更改您的
日期范围
以包括2017年的所有日期(可能存储在列表中而不是打印)哇,太酷了。我正在从R转换到python,因此我可能会问一些幼稚的问题,你能建议我如何将它们存储为数据帧,而不是打印它们只是将它们附加到列表中,或者诸如此类的东西吗。如果您正在讨论如何将它们存储到某种文件中,那么上面有很多答案,可以解决这个问题。