问答

python – 计算pandas中列中第n个元素的平均值

 来源    2019-06-27    26  

我有以下数据帧:

             df1
index   year   week   a     b     c
 -10    2017    10   45    26    19
  -9    2017    11   37    23    14
  -8    2017    12   21    66    19
  -7    2017    13   47    36    92
  -6    2017    14   82    65    18
  -5    2017    15   68    68    19
  -4    2017    16   30    95    24
  -3    2017    17   21    15    94
  -2    2017    18   67    30    16
  -1    2017    19   10    13    13
   0    2017    20   26    22    18
   1    2017    21   NaN   NaN   NaN
   2    2017    22   NaN   NaN   NaN
   3    2017    23   NaN   NaN   NaN
   4    2017    24   NaN   NaN   NaN
   ...
   53   2018    20   NaN   NaN   NaN

我需要为每个空单元格计算列中前一个第n个值的平均值,并将此值写入单元格. n等于零和向上的索引数.例如,对于列a中的第一个空单元格,我必须计算索引0和-10之间的平均值.然后是1和-9之间的下一个单元格,依此类推.列a,b和c也是如此.并且计算总是从index = 1开始.

问题是a,b,c等列数可能不同.但我知道这些列将始终在列周之后.是否可以将这些计算应用于无限数量的列,但是如果已知这些列将位于列周之后?

我努力寻找任何东西,但我找不到合适的东西.

UPD:如果这有帮助,index = 0和down的最大行数将为53.

你可以通过玩熊猫和numpy来做一些这样的事情.假设你知道周列的索引是什么(即使你没有,一个简单的搜索会得到你的索引),例如,周列是第3,你可以做类似的事情

import numpy as np
import pandas as pd
#data is your dataframe name
column_list = list(data.columns.values)[3:]
for column_name in column_list :
    column = data[column_name].values
    #converted pandas series to numpy series
    for index in xrange(0,column.shape[0]):
        #iterating over entries in the column
        if np.isnan(column[index]):
            column[index] = np.nanmean(column.take(range(index-10,index+1),mode='wrap'))

这是一个糟糕的未实现的解决方案,但应该工作正常.它将用前面的10个条目替换所有NaN条目.如果您只想要前面的10而没有环绕,那么您只需要将第一个n取为小于10的n,就像
new_df [index] = np.nanmean(new_df [max(0,index-10):index 1])

希望这可以帮助!

相关文章
python – 在Pandas Dataframe列中填写缺少的日期值
问答我正在使用Pandas使用数据框存储股票价格数据.数据集中有2940行.数据集快照显示如下: 时间序列数据不包含星期六和星期日的值.因此必须填补缺失值. 这是我写的代码,但它没有解决问题: impor ...
python – 计算pandas数据框中单词的频率
问答我有一张如下表: URN Firm_Name 0 104472 R.X. Yah & Co 1 104873 Big Building Society 2 109986 St James's ...
python – 在pandas dataframe列中查找特定模式
问答我想在pandas dataframe列中找到一个特定的模式,并返回相应的索引值以便对数据帧进行子集化. 这是一个带有可能模式的示例数据框: 用于生成数据帧的代码段: import pandas as ...
python – 在Pandas Dataframe列中对列表进行排序
问答我有一个Dataframe列,它是一个列表集合 a ['a', 'b'] ['b', 'a'] ['a', 'c'] ['c', 'a'] 我想使用此列表按其唯一值(['a','b']& [' ...
python – 从pandas日期列中减去当前时间
问答我有一个像熊猫一样的数据框 x = pd.DataFrame(['05/06/2015 00:00', '22/06/2015 00:00', None], columns=['myDate']) 我 ...
python – 在Pandas dataframe列中查找最长字符串的长度
问答是否有更快的方法来查找Pandas DataFrame中最长字符串的长度,而不是下面示例中显示的长度? import numpy as np import pandas as pd x = ['ab' ...
python – 删除pandas DataFrame列中字符串条目的结尾
问答我有一个pandas Dataframe,其中一列是文件列表 import pandas as pd df = pd.read_csv('fname.csv') df.head() filename ...
python – 在pandas数据列中访问total_seconds()
问答我想在pandas数据框中创建一个新列,它是从数据帧开始经过的时间.我正在将日志文件导入到具有数据时间信息的数据框中,但是访问s_df ['delta_t']中的total_seconds()函数不起 ...
python – 在Pandas DataFrame列中替换n个连续值
问答假设我有以下DataFrame df df = pd.DataFrame({"a" : [1,2,2,2,2,2,2,2,2,3,3,4,4,4,4,4,4,4,4,4,4,4,4 ...
python – 计算Pandas GroupBy Dataframe中两个日期之间的行数
问答我有以下测试DataFrame: import random from datetime import timedelta import pandas as pd import datetime #c ...
python – 计算pandas帧列组合之间距离的有效方法
问答任务 我有一个pandas数据框,其中: >列是文档名称 >行是这些文档中的单词 >框架单元格内的数字是单词相关性的度量(如果你想保持简单的单词计数) 我需要计算一个新的doc1-d ...
python – 计算pandas datetime列的累积持续时间
问答假设我有以下pandas数据帧 df = pd.DataFrame ({'time': ['2014-05-01 18:47:05', '2014-05-01 18:47:06', '2014-05- ...
python – 计算pandas列中列表元素的总数
问答我有一个panda数据框A,列关键字为 (这里我只显示4行,但实际上有数百万): – keywords ['loans','mercedez','bugatti'] ['trump','usa'] [ ...
python – 如何通过对象计算大pandas组列中的不同值?
问答我有一个pandas数据框,并将其分为两列(例如col1和col2).对于col1和col2的固定值(即对于一个组),我可以在col3中有几个不同的值.我想计算第三列中不同值的数量. 例如,如果我有这 ...
python – 计算pandas中每行的一些值的列数
问答我有这样的数据帧, 数据: Site code Col1 Col2 Col3 A5252 24 53 NaN A5636 36 NaN NaN A4366 NaN NaN NaN A7578 42 7 ...
python – 计算Pandas中每列的唯一符号
问答我想知道如何计算数据帧中单个列中出现的唯一符号的数量.例如: df = pd.DataFrame({'col1': ['a', 'bbb', 'cc', ''], 'col2': ['ddd', 'e ...
Python pandas计算时间,直到列中的值大于当前时间段中的值
问答我在python中有一个pandas数据帧,有几列和一个日期时间戳.我想创建一个新列,用于计算输出小于当前时间段的时间. 我当前的表看起来像这样: datetime output 2014-05-01 ...
python – 计算pandas DataFrame中列对的减法
问答我使用大尺寸(48K行,最多数十列)DataFrames.在他们操纵的某个时刻,我需要对列值进行成对减法,我想知道是否有更有效的方法来做到这一点而不是我正在做的那个(见下文). 我目前的代码: # M ...
python – pandas计算数据帧每列中的值
问答我正在寻找一种方法来计算一列中的值的数量,并证明它比我原先想象的更棘手. Percentile Percentile1 Percentile2 Percentile3 0 mediocre conte ...