当前位置: 首页 > 面试题库 >

python中的模块化算法来迭代熊猫数据框

微生信鸿
2023-03-14
问题内容

好的,我有一个大数据框,例如:

hour value 0 0 1 1 6 2 2 12 3 3 18 4 4 0 5 5 6 6 6 12 7 7 18 8 8 6 9 9 12 10 10 18 11 11 12 12 12 18 13 13 0 14

我们不要在这里迷路。该列hour代表一天中的小时,从6到6个小时。Columnvalues很好,确切地说,这里的值仅作为示例,而不是实际的值。

如果您仔细查看该hour列,您会发现缺少几个小时。例如,第7行和第8行之间有一个间隔(缺少小时0的值)。还有更大的差距,例如在第10行和第11行之间(第00和06小时)。

我需要什么?我想检查何时缺少一个小时(当然还有一个值),并完成数据框,在其中插入带有相应小时数和np.nanas值的行。

我在想什么 我认为使用模块化算法可以轻松解决此问题,在这种情况下,使用mod 24(例如when)18 + 6 = 24 = 0 mod 24。因此,将计数器初始化为零,并加警告6 ,以确保在模块化算术mod 24中定义了该计数器,您可以验证每个hour小时是否都是对应的小时,如果不是,则插入具有相应小时和np.nan作为值的新行。

我不知道如何在python中执行模块化算术的实现以迭代数据帧列。

非常感谢你。


问题答案:

group_hours = (df.hour <= df.hour.shift()).cumsum()

def insert_missing_hours(df):
    return df.set_index('hour').reindex([0, 6, 12, 18]).reset_index()

df.groupby(group_hours).apply(insert_missing_hours).reset_index(drop=1)

好像:

    hour  value
0      0    1.0
1      6    2.0
2     12    3.0
3     18    4.0
4      0    5.0
5      6    6.0
6     12    7.0
7     18    8.0
8      0    NaN
9      6    9.0
10    12   10.0
11    18   11.0
12     0    NaN
13     6    NaN
14    12   12.0
15    18   13.0
16     0   14.0
17     6    NaN
18    12    NaN
19    18    NaN

说明
为了应用,reindex我需要确定要分组的行。我检查行的小时数是否小于或等于前一行的小时数。如果是这样,则标记一个新组。

insert_missing_hours恰恰是reindex的子组[0, 6, 12, 18]



 类似资料:
  • 问题内容: 我有一个大的数据框(几百万行)。 我希望能够对它进行分组操作,而只是按行的任意连续(最好大小相等)的子集进行分组,而不是使用各个行的任何特定属性来确定它们要进入的组。 用例:我想通过IPython中的并行映射将函数应用于每一行。哪行进入哪个后端引擎都没有关系,因为该函数一次基于一行来计算结果。(至少在概念上;实际上是矢量化的。) 我想出了这样的东西: 但这似乎很漫长,并且不能保证大小相

  • 问题内容: 假设我有一个熊猫数据框: 我想计算数据框的列均值。 这很简单: 然后按列范围max(col)-min(col)。这又很容易: 现在,对于每个元素,我要减去其列的均值并除以其列的范围。我不确定该怎么做 任何帮助/指针将不胜感激。 问题答案:

  • 问题内容: 好的,我有一个(大)数据框,如下所示: 如您所见,数据框具有一列,一列,每天有四个小时(00、06、12、18)和一列。 问题在于数据框中缺少日期,在上面的示例中,第8行和第9行之间应该有两个额外的行,分别对应于小时和当天,并且在第9行和第10行之间应该有一个额外的行,对应于小时和日期。一天中的一个小时。 我需要什么? 我想对数据框的列进行迭代,检查每天是否存在并且没有人丢失,并且每天

  • 我有一个熊猫数据框,它有语料库的术语频率,术语为行,年份为列,就像这样: 我希望能够通过将每个单词的值除以给定年份的总单词数来标准化它们——有些年份包含两倍多的文本,所以我试图按年缩放(像谷歌图书一样)。我已经看了如何缩放单个列的例子,克里斯·阿尔邦和我在SO上看到了缩放所有列的例子,但是每次我试图将这个数据框转换为一个数组来缩放时,事情都会窒息列这个词不是数字。(我尝试将术语列设置为索引,但不太

  • 问题内容: 我有一个Pandas数据框,其中一列包含文本。我想获得一列出现在整列中的唯一单词的列表(空格是唯一的拆分)。 输出应如下所示: 获得计数也没有什么坏处,但这不是必需的。 问题答案: 使用来创建唯一元素的序列。 进行一些清理以使小写字母的字符串分解: 该列中的每个列表都可以传递给函数以获取唯一值。使用这样做: 或与from注释一起使用:

  • 我有一个数据框架,myDF,其中一列我希望使用来自其他列的条件和索引与第二个数据框架,标准DF的组合设置为零。 myDF.head(): 标准DF: 然后通过以下for循环运行myDF: 这会产生以下错误: 回溯(最近一次调用): 文件 “”, 第 1 行, in runfile('myscript.py', wdir='C:myscript') 文件“C:\ program data \ ana