【问题标题】:Creating a column with a slice of other column's values in python在python中创建一个包含其他列值切片的列
【发布时间】:2021-05-21 21:39:53
【问题描述】:

我想创建一个包含另一列值的列,但是新列的 (B) 值从原始列 (A) 的特定部分(在示例中是第四个值)开始)。它看起来像这样:

index  A       B
0      73      290
1      90      9
2      38      38
3      290     29
4      9       etc
5      38      ..
6      29      ..
etc    etc     ..

提前谢谢你!

【问题讨论】:

  • 请使用您尝试实现此目的的编程语言或技术进行标记。
  • 说的很好,我用的是python!
  • 请使用 Python tag your question。要标记您的问题,请编辑您的问题并在计算列旁边输入“python”,然后单击显示 python 的框,然后单击保存。此外,如果你使用的是 pandas,你可能也想用它来标记,可能还有数据框标记。
  • @vivi 如果解决方案解决了您的问题或者您需要更多帮助,请告诉我?

标签: python pandas dataframe calculated-columns


【解决方案1】:

只需使用基于标签的基于整数的索引方法@987654323即可完成@ 和 iloc。您应该查看官方docs 以了解更多信息。它们可以提供一系列有用的操作。

在您的示例中,由于第 4 个值的索引位置为3,您应该这样做:

df['B'] = df['A'].loc[3:].reset_index(drop=True)

>>> df
index    A      B
    0   73  290.0
    1   90    9.0
    2   38   38.0
    3  290   29.0
    4    9    NaN
    5   38    NaN
    6   29    NaN

或者,您也可以使用pandas.DataFrame.shift 方法来实现此目的。它按所需的点数/周期数移动索引。阅读它here

因此,由于您需要从 A 中的第 4 个值开始填充列 B,因此您必须将列 A's3 索引向上移动。你可以这样实现:

>>> df['B'] = df['A'].shift(-3)
>>> df
index    A      B
    0   73  290.0
    1   90    9.0
    2   38   38.0
    3  290   29.0
    4    9    NaN
    5   38    NaN
    6   29    NaN

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-09
    • 2021-09-02
    • 2021-11-09
    相关资源
    最近更新 更多