扩展数据框中的每一行

ℕʘʘḆḽḘ

考虑这个简单的例子

data = pd.DataFrame({'mydate' : [pd.to_datetime('2016-06-06'),
                                 pd.to_datetime('2016-06-02')],
                     'value' : [1, 2]})

data.set_index('mydate', inplace = True)

data
Out[260]: 
            value
mydate           
2016-06-06      1
2016-06-02      2

我想遍历每一行,以便数据框围绕当前行的每个索引值(即日期)“放大”几天(前 2 天,后 2 天)。

举例来说,如果你考虑的第一行,我想告诉熊猫加4个排,对应天2016-06-042016-06-052016-06-072016-06-07value这些多余的行可以只是whathever是value该行(在这种情况下:1)。该逻辑适用于每一行,最终的数据帧是所有这些放大的数据帧的串联。

我在一个中尝试了以下功能apply(., axis = 1)

def expand_onerow(df, ndaysback = 2, nhdaysfwd = 2):

    new_index = pd.date_range(pd.to_datetime(df.name) - pd.Timedelta(days=ndaysback), 
                              pd.to_datetime(df.name) + pd.Timedelta(days=nhdaysfwd), 
                              freq='D')

    newdf = df.reindex(index=new_index, method='nearest')     #New df with expanded index
    return newdf

但不幸的是,我跑步data.apply(lambda x: expand_onerow(x), axis = 1)给出了:

  File "pandas/_libs/tslib.pyx", line 1165, in pandas._libs.tslib._Timestamp.__richcmp__

TypeError: ("Cannot compare type 'Timestamp' with type 'str'", 'occurred at index 2016-06-06 00:00:00')

我尝试的另一种方法如下:我首先重置索引,

data.reset_index(inplace = True)
data
Out[339]: 
      mydate  value
0 2016-06-06      1
1 2016-06-02      2

然后我稍微修改一下我的功能

def expand_onerow_alt(df, ndaysback = 2, nhdaysfwd = 2):

    new_index = pd.date_range(pd.to_datetime(df.mydate) - pd.Timedelta(days=ndaysback), 
                              pd.to_datetime(df.mydate) + pd.Timedelta(days=nhdaysfwd), 
                              freq='D')
    newdf = pd.Series(df).reindex(index = new_index).T  #New df with expanded index
    return newdf

这使

data.apply(lambda x: expand_onerow_alt(x), axis = 1)
Out[338]: 
   2016-05-31  2016-06-01  2016-06-02  2016-06-03  2016-06-04  2016-06-05  2016-06-06  2016-06-07  2016-06-08
0         nan         nan         nan         nan         nan         nan         nan         nan         nan
1         nan         nan         nan         nan         nan         nan         nan         nan         nan

更近了,但还没有...

我不明白这里有什么问题。我错过了什么?我在这里寻找最潘多尼的方法。

谢谢!

贝尼

我修改了一点你的功能

def expand_onerow(df, ndaysback = 2, nhdaysfwd = 2):

    new_index = pd.date_range(pd.to_datetime(df.index[0]) - pd.Timedelta(days=ndaysback),
                              pd.to_datetime(df.index[0]) + pd.Timedelta(days=nhdaysfwd),
                              freq='D')

    newdf = df.reindex(index=new_index, method='nearest')     #New df with expanded index
    return newdf

pd.concat([expand_onerow(data.loc[[x],:], ndaysback = 2, nhdaysfwd = 2) for x ,_ in data.iterrows()])


Out[455]: 
            value
2016-05-31      2
2016-06-01      2
2016-06-02      2
2016-06-03      2
2016-06-04      2
2016-06-04      1
2016-06-05      1
2016-06-06      1
2016-06-07      1
2016-06-08      1

更多信息

基本上那一行等于

l=[]
for x ,_ in data.iterrows():

    l.append(expand_onerow(data.loc[[x],:], ndaysback = 2, nhdaysfwd = 2))# query out each row by using their index(x is the index for each row) and append then into a empty list


pd.concat(l)# concat the list to one df at the end 

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

按降序排列数据框中的每一行

来自分类Dev

数据框中每一行的条形图

来自分类Dev

在数据框中拆分每一行

来自分类Dev

数据框中每一行的条形图

来自分类Dev

访问每一行并检查数据框中的每一列值

来自分类Dev

如何既从数据框中随机选择行又删除已选择的每一行?

来自分类Dev

R将数据框中的每一列除以最后一行的值

来自分类Dev

在pyspark [non pandas]中为数据框的每一行调用一个函数

来自分类Dev

如何在Python中为数据框的每一行创建唯一的XML

来自分类Dev

在python中为Panda数据框的每一行创建一个Radar Chart

来自分类Dev

为熊猫数据框的每一行替换一列中的字符串

来自分类Dev

R将数据框中的每一列除以最后一行的值

来自分类Dev

在数据框中的每一行插入一个空行

来自分类Dev

在python数据框中的每一行中查找最大值

来自分类Dev

计算数据框中每一行和特定列在列表中的出现次数

来自分类Dev

数数 数据框中列的每一行中的令牌数量

来自分类Dev

遍历数据框中列的每一行中的列表

来自分类Dev

如何在pyspark的数据框中的每一行中查找字符串

来自分类Dev

如何使数据框中的每一行的每一列都有一个值?

来自分类Dev

查找数据框每一行的元素的列索引

来自分类Dev

遍历每一行并比较数据框的列值

来自分类Dev

查找数据框每一行的元素的列索引

来自分类Dev

对于数据框中的每一行,遍历另一个数据框

来自分类Dev

检查数据框中的每一行和每一列,并用用户定义函数替换值

来自分类Dev

数据框中每一列和每一行的百分位数

来自分类Dev

在数据框中查找每一行的前N列

来自分类Dev

排序熊猫数据框中每一行的最快方法

来自分类Dev

按列值对数据框中的每一行进行排序

来自分类Dev

如何在Python数据框中的每一行上使用split函数?

Related 相关文章

  1. 1

    按降序排列数据框中的每一行

  2. 2

    数据框中每一行的条形图

  3. 3

    在数据框中拆分每一行

  4. 4

    数据框中每一行的条形图

  5. 5

    访问每一行并检查数据框中的每一列值

  6. 6

    如何既从数据框中随机选择行又删除已选择的每一行?

  7. 7

    R将数据框中的每一列除以最后一行的值

  8. 8

    在pyspark [non pandas]中为数据框的每一行调用一个函数

  9. 9

    如何在Python中为数据框的每一行创建唯一的XML

  10. 10

    在python中为Panda数据框的每一行创建一个Radar Chart

  11. 11

    为熊猫数据框的每一行替换一列中的字符串

  12. 12

    R将数据框中的每一列除以最后一行的值

  13. 13

    在数据框中的每一行插入一个空行

  14. 14

    在python数据框中的每一行中查找最大值

  15. 15

    计算数据框中每一行和特定列在列表中的出现次数

  16. 16

    数数 数据框中列的每一行中的令牌数量

  17. 17

    遍历数据框中列的每一行中的列表

  18. 18

    如何在pyspark的数据框中的每一行中查找字符串

  19. 19

    如何使数据框中的每一行的每一列都有一个值?

  20. 20

    查找数据框每一行的元素的列索引

  21. 21

    遍历每一行并比较数据框的列值

  22. 22

    查找数据框每一行的元素的列索引

  23. 23

    对于数据框中的每一行,遍历另一个数据框

  24. 24

    检查数据框中的每一行和每一列,并用用户定义函数替换值

  25. 25

    数据框中每一列和每一行的百分位数

  26. 26

    在数据框中查找每一行的前N列

  27. 27

    排序熊猫数据框中每一行的最快方法

  28. 28

    按列值对数据框中的每一行进行排序

  29. 29

    如何在Python数据框中的每一行上使用split函数?

热门标签

归档