【问题标题】:Data Comparison in Python Pandas SeriesPython Pandas 系列中的数据比较
【发布时间】:2018-05-25 15:46:47
【问题描述】:

这是我希望基于第三个比较的 2 个数据系列。

data_SKU1:

SKU     Weight1     
1234    20
1235    30
111     40
101     23

data_SKU2:

SKU     Weight2
1234    22
1235    35
111     47
101     87

标志数据:

SKU
1234     True
1235     False
111      True
101      False
Name: Date, dtype: bool

基本上基于flag_Data Serie中的值,我需要将Weight1的值除以Weight2,反之亦然。

例如:

j = flag_Data(dados_SKU1, dados_SKU1) #this generates the third series
if(j[1234]==True):
  generated_serie = data_SKU1['Weight1'][1234] / dados_SKU2['Weight2'][1234]
else:
  generated_serie = data_SKU2['Weight2'][1234] / data_SKU1['Weight1'][1234]

但应该对系列中的所有 SKU 进行此操作,而不仅仅是 SKU 1234。你们能帮忙弄清楚如何做吗?

【问题讨论】:

    标签: python pandas dataframe timestamp series


    【解决方案1】:

    设置
    merge

    df = df1.merge(df2)
    
        SKU  Weight1  Weight2   FLAG
    0  1234       20       22   True
    1  1235       30       35  False
    2   111       40       47   True
    3   101       23       87  False
    

    选项 1
    np.where

    df['division'] = np.where(df['FLAG'], df['Weight1']/df['Weight2'], df['Weight2']/df['Weight1'])
    

    选项 2
    locfillna

    df.loc[df['FLAG'], 'division'] = df.Weight1 / df.Weight2
    df['division'] = df.division.fillna(df.Weight2/df.Weight1)
    

    选项 3
    maskfillna

    df['division'] = (df.Weight1 / df.Weight2.mask(~df.FLAG)).fillna(df.Weight2/df.Weight1)
    

    所有结果:

        SKU  Weight1  Weight2   FLAG  division
    0  1234       20       22   True  0.909091
    1  1235       30       35  False  1.166667
    2   111       40       47   True  0.851064
    3   101       23       87  False  3.782609
    

    【讨论】:

      【解决方案2】:

      您可以为此使用 np.where:

      result = np.where(flag_Data,
                        data_SKU1['Weight1']/data_SKU2['Weight2'],
                        data_SKU2['Weight2']/data_SKU1['Weight1'])
      

      【讨论】:

        猜你喜欢
        • 2020-09-25
        • 1970-01-01
        • 1970-01-01
        • 2020-05-15
        • 1970-01-01
        • 2017-03-08
        • 2020-01-31
        • 1970-01-01
        • 2020-11-09
        相关资源
        最近更新 更多