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

熊猫:将值在一组内下移一行

云新知
2023-03-14
问题内容

我有一个Pandas数据框,我想创建一个新列,其值是另一列的值,向下移动一行。最后一行应显示NaN。

问题是我想按组进行此操作,每个组的最后一行显示NaN。不能让组的最后一行从数据组中恰好相邻的组中“窃取”一个值。

我尝试的实现方式非常可耻,所以我显然误解了一些基本知识。

df['B_shifted'] = df.groupby(['A'])['B'].transform(lambda x:x.values[1:])

问题答案:

Shift对groupby子句的输出起作用:

>>> df = pandas.DataFrame(numpy.random.randint(1,3, (10,5)), columns=['a','b','c','d','e'])
>>> df
   a  b  c  d  e
0  2  1  2  1  1
1  2  1  1  1  1
2  1  2  2  1  2
3  1  2  1  1  2
4  2  2  1  1  2
5  2  2  2  2  1
6  2  2  1  1  1
7  2  2  2  1  1
8  2  2  2  2  1
9  2  2  2  2  1


for k, v in df.groupby('a'):
    print k
    print 'normal'
    print v
    print 'shifted'
    print v.shift(1)

1
normal
   a  b  c  d  e
2  1  2  2  1  2
3  1  2  1  1  2
shifted
    a   b   c   d   e
2 NaN NaN NaN NaN NaN
3   1   2   2   1   2
2
normal
   a  b  c  d  e
0  2  1  2  1  1
1  2  1  1  1  1
4  2  2  1  1  2
5  2  2  2  2  1
6  2  2  1  1  1
7  2  2  2  1  1
8  2  2  2  2  1
9  2  2  2  2  1
shifted
    a   b   c   d   e
0 NaN NaN NaN NaN NaN
1   2   1   2   1   1
4   2   1   1   1   1
5   2   2   1   1   2
6   2   2   2   2   1
7   2   2   1   1   1
8   2   2   2   1   1
9   2   2   2   2   1


 类似资料:
  • 我想分配一个组的第一行。 输入: 我尝试了: 但是我只得到第一排。 我想要这样的输出:

  • 问题内容: 我有一个熊猫数据框。我想“落后”我的专栏之一。例如,这意味着将整个列“ gdp”上移一位,然后删除其余行底部的所有多余数据,以使所有列的长度再次相等。 无论如何要这样做? 问题答案:

  • 请考虑下表:对于每个代码,每一个状态都有一些值。 现在我想以这样的方式转置表,使成为列: 我不能让它工作,只转置那个特定的列。 在熊猫身上实现这一目标的好办法是什么?

  • 问题内容: 有没有办法在熊猫中舍入单个列而不影响数据框的其余部分? df.value1.apply(np.round)给出 使数据看起来像这样的正确方法是什么: 问题答案: 你很亲密 您将此回合应用于给出的一系列值。因此,返回类型为Series。您需要将该系列分配回该数据框(或具有相同索引的另一个数据框)。 同样,有一种方法基本上是的简写。

  • 问题内容: 我有一个包含以下信息的数据框: 我想根据索引插入数据帧中的值, 但仅在每个文件组中 。 插值,我通常会做 和我一起做 我希望插入的数据帧看起来像这样: NaN仍然存在于t = 6的位置,因为它们是file2组中的第一项。 我怀疑我需要使用“应用”,但是还无法确切地知道如何… 任何帮助,将不胜感激。 问题答案:

  • 假设我们有熊猫表: 我们如何删除只有“狗”一个条目的行?例如,这将是带有pom,雪橇犬的行。 谢谢!