首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >迭代数据框中的行创建新列,然后根据新列添加更多列

迭代数据框中的行创建新列,然后根据新列添加更多列
EN

Stack Overflow用户
提问于 2019-05-06 06:06:22
回答 2查看 457关注 0票数 1

我有一个数据框,如下:

代码语言:javascript
复制
Date           Quantity
2019-04-25     100
2019-04-26     148
2019-04-27     124

我需要的输出是获取两个下一个日期之间的数量差异,并在24小时内取平均值,并创建23列,将每小时的数量差异添加到之前的列中,如下所示:

代码语言:javascript
复制
Date           Quantity Hour-1   Hour-2 ....Hour-23
2019-04-25     100      102      104   .... 146
2019-04-26     148      147      146   .... 123
2019-04-27     124

我试图迭代一个循环,但它不起作用,我的代码如下:

代码语言:javascript
复制
for i in df.index:
    diff=(df.get_value(i+1,'Quantity')-df.get_value(i,'Quantity'))/24
    for j in range(24):
    df[i,[1+j]]=df.[i,[j]]*(1+diff)

我做了一些研究,但我还没有发现如何迭代地创建像上面这样的列。我希望你能帮助我。提前谢谢你。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-05-06 07:00:33

IIUC使用resampleinterpolate,然后我们pivot输出

代码语言:javascript
复制
s=df.set_index('Date').resample('1 H').interpolate()
s=pd.pivot_table(s,index=s.index.date,columns=s.groupby(s.index.date).cumcount(),values=s,aggfunc='mean')
s.columns=s.columns.droplevel(0)
s
Out[93]: 
               0      1      2      3   ...       20     21     22     23
2019-04-25  100.0  102.0  104.0  106.0  ...    140.0  142.0  144.0  146.0
2019-04-26  148.0  147.0  146.0  145.0  ...    128.0  127.0  126.0  125.0
2019-04-27  124.0    NaN    NaN    NaN  ...      NaN    NaN    NaN    NaN
[3 rows x 24 columns]
票数 2
EN

Stack Overflow用户

发布于 2019-05-06 06:28:37

如果我没弄错问题的话。

for循环方法:

代码语言:javascript
复制
list_of_values = []
for i,row in df.iterrows():
    if i < len(df) - 2:
         qty = row['Quantity']
         qty_2 = df.at[i+1,'Quantity']
         diff = (qty_2 - qty)/24
         list_of_values.append(diff)
   else:
         list_of_values.append(0)

df['diff'] = list_of_values

输出:

代码语言:javascript
复制
Date           Quantity   diff
2019-04-25     100        2
2019-04-26     148        -1
2019-04-27     124        0

现在创建所需的列。

代码语言:javascript
复制
df['Hour-1'] = df['Quantity'] + df['diff']
df['Hour-2'] = df['Quantity'] + 2*df['diff']
.
.
.
.

还有其他方法会工作得更好。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55996813

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档