首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在同一个dataFrame中复制数据

在同一个dataFrame中复制数据
EN

Stack Overflow用户
提问于 2021-01-09 19:23:49
回答 2查看 71关注 0票数 0

当满足某一条件时,我想从相同的数据中复制数据。Dataframe:

代码语言:javascript
复制
Hour,Wage
 1,15
 2,17
 4,20
 10,25 
 15,26
 16,30
 17,40
 19,15

在进行循环时,我希望复制数据帧,而row.hour中的差异大于4。

预期产出:

代码语言:javascript
复制
Hour,Wage
    1,15
    2,17
    4,20
    10,25
    15,26
    16,30
    17,40
    19,15
    2,17
    4,20

当迭代遍历所有行时,我想复制行,并且在row.hour row.hour =1 row.hour1 =2中存在大于4的差异。这里的差异是1,但在(row.hour2=4和行,hour3=10).here中,差大于4。我想在满足这个条件(大于4)的情况下复制索引上面的数据,我可以用**df = pd.concat([df]*2, ignore_index=False)**.but复制数据--当我用if语句运行它时,它不会复制。

我尝试了下面的代码,但什么也没发生。

代码语言:javascript
复制
**for i in range(0,len(df)-1):
     if (df.iloc[i,0] - df.iloc[i+1,0]) > 4  :
            df = pd.concat([df]*2, ignore_index=False)**
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-01-09 21:30:53

我的理解是:您希望比较连续两行的“小时”值。如果差异大于4,则希望将前一行添加到DF中。如果这就是你想要的,试试这个:

创建一个DF:

代码语言:javascript
复制
       j = pd.DataFrame({'Hour':[1, 2, 4,10,15,16,17,19],
              'Wage':[15,17,20,25,26,30,40,15]})

定义一个函数:

代码语言:javascript
复制
   def f1(d):
     dn = d.copy()
     for x in range(len(d)-2):
         if (abs(d.iloc[x+1].Hour - d.iloc[x+2].Hour) > 4):
            idx = x + 0.5
            dn.loc[idx] = d.iloc[x]['Hour'], d.iloc[x]['Wage']

     dn = dn.sort_index().reset_index(drop=True)
     return dn

调用传递DF的函数:

代码语言:javascript
复制
   nd = f1(j)


     Hour   Wage
    0   1   15
   1    2   17
   2    2   17
   3    4   20
   4    4   20
   5    10  25
   6    15  26
   7    16  30
   8    17  40
   9    19  15
票数 0
EN

Stack Overflow用户

发布于 2021-01-09 20:38:40

排成一行

代码语言:javascript
复制
if df.iloc[i,0] - df.iloc[i+1,0] > 4

计算4-10而不是10-4,所以检查-6 > 4而不是6 > 4

你必须更换物品

代码语言:javascript
复制
if df.iloc[i+1,0] - df.iloc[i,0] > 4

或者使用abs(),如果您想在这两种情况下进行复制-- > 4< -4

代码语言:javascript
复制
if abs(df.iloc[i+1,0] - df.iloc[i,0]) > 4

如果您使用print( df.iloc[i,0] - df.iloc[i+1,0]) (或调试器),您将看到它。

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

https://stackoverflow.com/questions/65646732

复制
相关文章

相似问题

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