根据条件用同一变量内的值复制和替换值
Copying and Replacing Values with Values Within the Same Variable Based on Condition
抱歉,如果标题不够具体,我是在 excel 中想象的。我有一个数据框:
Product Group ... Score_Alpha Score_Beta
0 XXX0X1 Cinnamon ... 0.007598 0.007538
1 XXX0X2 Cinnamon ... 0.007598 0.007538
2 XXX0X3 Cinnamon ... 0.007598 0.007538
3 XXX0X4 Cinnamon Special ... 0.003343 0.002696
4 XXX0X5 Cinnamon Special ... 0.003343 0.002696
5 XXX0X6 Cinnamon Special ... 0.003343 0.002696
6 XXX0X7 Peach ... 0.003399 0.004444
7 XXX0X8 Peach ... 0.003399 0.004444
8 XXX0X9 Peach ... 0.003399 0.004444
9 XXX0X10 Peach Special ... 0.006677 0.006262
10 XXX0X11 Peach Special ... 0.006677 0.006262
11 XXX0X12 Peach Special ... 0.006677 0.006262
我需要将 Group =='Cinnamon Special' 行的 Score_Alpha 和 Score_Beta 替换为 'Cinnamon' 行, 'Peach Special' 和'Peach'。基本上,它应该是这样的:
Product Group ... Score_Alpha Score_Beta
0 XXX0X1 Cinnamon ... 0.007598 0.007538
1 XXX0X2 Cinnamon ... 0.007598 0.007538
2 XXX0X3 Cinnamon ... 0.007598 0.007538
3 XXX0X4 Cinnamon Special ... 0.007598 0.007538
4 XXX0X5 Cinnamon Special ... 0.007598 0.007538
5 XXX0X6 Cinnamon Special ... 0.007598 0.007538
6 XXX0X7 Peach ... 0.003399 0.004444
7 XXX0X8 Peach ... 0.003399 0.004444
8 XXX0X9 Peach ... 0.003399 0.004444
9 XXX0X10 Peach Special ... 0.003399 0.004444
10 XXX0X11 Peach Special ... 0.003399 0.004444
11 XXX0X12 Peach Special ... 0.003399 0.004444
如果此类问题已经得到解答,我深表歉意,我的谷歌搜索技术值得怀疑。
我在组中有大约 30 多个唯一值和它们自己的 'XXX Special' 对应项,所以我无法按变量中的特定值手动分组
感谢阅读!
首先,获取 Score_Alpha 和 Score_Beta 的值,其中 Group =='Cinnamon'
scores = df.loc[df["Group"]=='Cinnamon',["Score_Alpha", "Score_Beta"]].iloc[0].tolist()
其次,把分数放到 df where Group =='Cinnamon Special'
df.loc[df["Group"]=='Cinnamon Special', ["Score_Alpha", "Score_Beta"]] = scores
同理,
scores = df.loc[df["Group"]=='Peach',["Score_Alpha", "Score_Beta"]].iloc[0].tolist()
df.loc[df["Group"]=='Peach Special', ["Score_Alpha", "Score_Beta"]] = scores
因为Group中有30+个unique values有自己的'XXX Special',你可以用一个函数来解决
# First, extract all group names without "Special"
names = [x for x in set(df["Group"].tolist()) if "Special" not in x]
# Second, define a function
def replace_values(df, name):
scores = df.loc[df["Group"] == name, ["Score_Alpha", "Score_Beta"]].iloc[0].tolist()
df.loc[df["Group"]== name + ' Special', ["Score_Alpha", "Score_Beta"]] = scores
# Third, iterate name in names
for name in group:
replace_values(df, name)
抱歉,如果标题不够具体,我是在 excel 中想象的。我有一个数据框:
Product Group ... Score_Alpha Score_Beta
0 XXX0X1 Cinnamon ... 0.007598 0.007538
1 XXX0X2 Cinnamon ... 0.007598 0.007538
2 XXX0X3 Cinnamon ... 0.007598 0.007538
3 XXX0X4 Cinnamon Special ... 0.003343 0.002696
4 XXX0X5 Cinnamon Special ... 0.003343 0.002696
5 XXX0X6 Cinnamon Special ... 0.003343 0.002696
6 XXX0X7 Peach ... 0.003399 0.004444
7 XXX0X8 Peach ... 0.003399 0.004444
8 XXX0X9 Peach ... 0.003399 0.004444
9 XXX0X10 Peach Special ... 0.006677 0.006262
10 XXX0X11 Peach Special ... 0.006677 0.006262
11 XXX0X12 Peach Special ... 0.006677 0.006262
我需要将 Group =='Cinnamon Special' 行的 Score_Alpha 和 Score_Beta 替换为 'Cinnamon' 行, 'Peach Special' 和'Peach'。基本上,它应该是这样的:
Product Group ... Score_Alpha Score_Beta
0 XXX0X1 Cinnamon ... 0.007598 0.007538
1 XXX0X2 Cinnamon ... 0.007598 0.007538
2 XXX0X3 Cinnamon ... 0.007598 0.007538
3 XXX0X4 Cinnamon Special ... 0.007598 0.007538
4 XXX0X5 Cinnamon Special ... 0.007598 0.007538
5 XXX0X6 Cinnamon Special ... 0.007598 0.007538
6 XXX0X7 Peach ... 0.003399 0.004444
7 XXX0X8 Peach ... 0.003399 0.004444
8 XXX0X9 Peach ... 0.003399 0.004444
9 XXX0X10 Peach Special ... 0.003399 0.004444
10 XXX0X11 Peach Special ... 0.003399 0.004444
11 XXX0X12 Peach Special ... 0.003399 0.004444
如果此类问题已经得到解答,我深表歉意,我的谷歌搜索技术值得怀疑。
我在组中有大约 30 多个唯一值和它们自己的 'XXX Special' 对应项,所以我无法按变量中的特定值手动分组
感谢阅读!
首先,获取 Score_Alpha 和 Score_Beta 的值,其中 Group =='Cinnamon'
scores = df.loc[df["Group"]=='Cinnamon',["Score_Alpha", "Score_Beta"]].iloc[0].tolist()
其次,把分数放到 df where Group =='Cinnamon Special'
df.loc[df["Group"]=='Cinnamon Special', ["Score_Alpha", "Score_Beta"]] = scores
同理,
scores = df.loc[df["Group"]=='Peach',["Score_Alpha", "Score_Beta"]].iloc[0].tolist()
df.loc[df["Group"]=='Peach Special', ["Score_Alpha", "Score_Beta"]] = scores
因为Group中有30+个unique values有自己的'XXX Special',你可以用一个函数来解决
# First, extract all group names without "Special"
names = [x for x in set(df["Group"].tolist()) if "Special" not in x]
# Second, define a function
def replace_values(df, name):
scores = df.loc[df["Group"] == name, ["Score_Alpha", "Score_Beta"]].iloc[0].tolist()
df.loc[df["Group"]== name + ' Special', ["Score_Alpha", "Score_Beta"]] = scores
# Third, iterate name in names
for name in group:
replace_values(df, name)