Python系列中的数据比较
这是两个数据系列,我希望在第三个数据系列的基础上进行比较 数据单元1:Python系列中的数据比较,python,pandas,dataframe,timestamp,series,Python,Pandas,Dataframe,Timestamp,Series,这是两个数据系列,我希望在第三个数据系列的基础上进行比较 数据单元1: SKU Weight1 1234 20 1235 30 111 40 101 23 数据单元2: SKU Weight2 1234 22 1235 35 111 47 101 87 标志数据: SKU 1234 True 1235 False 111 True 101 False Name: Date,
SKU Weight1
1234 20
1235 30
111 40
101 23
数据单元2:
SKU Weight2
1234 22
1235 35
111 47
101 87
标志数据:
SKU
1234 True
1235 False
111 True
101 False
Name: Date, dtype: bool
基本上基于flag_数据系列中的值,我需要将Weight1的值除以Weight2,反之亦然
对于intance:
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。你们能帮我弄清楚怎么做吗?你们可以用np.where来做这个:
result = np.where(flag_Data,
data_SKU1['Weight1']/data_SKU2['Weight2'],
data_SKU2['Weight2']/data_SKU1['Weight1'])
设置合并
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
df['division'] = np.where(df['FLAG'], df['Weight1']/df['Weight2'], df['Weight2']/df['Weight1'])
df.loc[df['FLAG'], 'division'] = df.Weight1 / df.Weight2
df['division'] = df.division.fillna(df.Weight2/df.Weight1)
df['division'] = (df.Weight1 / df.Weight2.mask(~df.FLAG)).fillna(df.Weight2/df.Weight1)
选项1np.其中
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
df['division'] = np.where(df['FLAG'], df['Weight1']/df['Weight2'], df['Weight2']/df['Weight1'])
df.loc[df['FLAG'], 'division'] = df.Weight1 / df.Weight2
df['division'] = df.division.fillna(df.Weight2/df.Weight1)
df['division'] = (df.Weight1 / df.Weight2.mask(~df.FLAG)).fillna(df.Weight2/df.Weight1)
选项2loc
与fillna
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
df['division'] = np.where(df['FLAG'], df['Weight1']/df['Weight2'], df['Weight2']/df['Weight1'])
df.loc[df['FLAG'], 'division'] = df.Weight1 / df.Weight2
df['division'] = df.division.fillna(df.Weight2/df.Weight1)
df['division'] = (df.Weight1 / df.Weight2.mask(~df.FLAG)).fillna(df.Weight2/df.Weight1)
选项3掩码
使用填充
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
df['division'] = np.where(df['FLAG'], df['Weight1']/df['Weight2'], df['Weight2']/df['Weight1'])
df.loc[df['FLAG'], 'division'] = df.Weight1 / df.Weight2
df['division'] = df.division.fillna(df.Weight2/df.Weight1)
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