【问题标题】:Store same value at rows of column B with identical negative numbers in column A of a pandas dataframe在 Pandas 数据框的 A 列中使用相同的负数在 B 列的行中存储相同的值
【发布时间】:2021-08-03 10:45:59
【问题描述】:

我有一个看起来像这样的 pandas 数据框:

import pandas as pd
import numpy as np
d = {'value1': [1, 2, 3, -4, 5, -1, 7, -2, 4], 'value2': [100, 200, 200, 300, np.nan, np.nan, np.nan, np.nan, np.nan]}
df = pd.DataFrame(data=d)
df

value1  value2
1       100.0
2       200.0
3       200.0
-4      300.0
5       NaN
-1      NaN
7       NaN
-2      NaN
4       NaN

我想在value2 列中出现相同数字的行中将相同的值存储在value 1 列中,但随后为负值,如下所示:

value1  value2
1       100.0
2       200.0
3       200.0
-4      300.0
5       NaN
-1      100.0
7       NaN
-2      200.0
4       300.0

实现这一目标的最佳方法是什么?

【问题讨论】:

    标签: python pandas dataframe numpy


    【解决方案1】:

    使用groupby()+abs()+ffill():

    按“value1”列的绝对值分组,然后向前填充“value2”的值,最后将其分配回“value2”列:

    df['value2']=df.groupby(df['value1'].abs())['value2'].ffill()
    

    df的输出:

        value1  value2
    0    1      100.0
    1    2      200.0
    2    3      200.0
    3   -4      300.0
    4    5      NaN
    5   -1      100.0
    6    7      NaN
    7   -2      200.0
    8    4      300.0
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-20
      • 2021-01-25
      • 2021-12-17
      • 2021-07-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-23
      相关资源
      最近更新 更多