第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

用另一列中的相同行值替換熊貓數(shù)據(jù)框列中的值

用另一列中的相同行值替換熊貓數(shù)據(jù)框列中的值

Go
守著星空守著你 2022-10-11 16:07:32
我有一個看起來像這樣的熊貓數(shù)據(jù)框:            val_1   val_2   FlagDate                       2018-08-27  221.0  121.0     02018-08-28  222.0  122.0     12018-08-29  223.0  123.0     02018-08-30  224.0  124.0     22018-08-31  225.0  125.0     0我想根據(jù)標志條件將標志列值更改為其他列的相同值。即,如果 Flag 為 1,則將同一行中的 1 替換為 val_1,如果 Flag 為 2,則將其替換為 val_2。我正在尋找的輸出如下所示:            val_1   val_2   FlagDate                       2018-08-27  221.0  121.0     02018-08-28  222.0  122.0     222.02018-08-29  223.0  123.0     02018-08-30  224.0  124.0     124.02018-08-31  225.0  125.0     0我知道我可以.loc這樣使用df.loc[df['Flag'] == 1, ['Flag']] =。我不知道代碼右側(cè)是什么。
查看完整描述

3 回答

?
慕斯王

TA貢獻1864條經(jīng)驗 獲得超2個贊

另一種方法是使用 np.wherenumpy.where(condtion,yes,no)


在這種情況下,我使用嵌套np.where這樣


np.where(If Flag=2,take val_2,(take x)) where takex is another np.where


df['Flag']=np.where(df['Flag']==1,df['val_1'],(np.where(df['Flag']==2,df['val_2'],df['Flag'])))

df

輸出

http://img1.sycdn.imooc.com//634524600001889002200160.jpg

查看完整回答
反對 回復 2022-10-11
?
喵喵時光機

TA貢獻1846條經(jīng)驗 獲得超7個贊

有幾種方法可以做到這一點,首先你的初始代碼非常接近,你只需要結(jié)束分配:


df.loc[df['Flag'] == 1, 'Flag'] = df['val_1']

print(df)

         Date  val_1  val_2   Flag

0  2018-08-27  221.0  121.0    0.0

1  2018-08-28  222.0  122.0  222.0

2  2018-08-29  223.0  123.0    0.0

3  2018-08-30  224.0  124.0    2.0

4  2018-08-31  225.0  125.0    0.0

你在這里做的是過濾你的數(shù)據(jù)框并替換條件匹配的值。在這種情況下,F(xiàn)lag 等于 1。


既然你正在做多重評估,讓我們使用np.select


import numpy as np

conditions = [df['Flag'].eq(1),

             df['Flag'].eq(2)]



choices = [df['val_1'],df['val_2']]


df['Flag'] = np.select(conditions,choices,default=df['Flag'])

這樣做的目的是評估您擁有的所有條件。將默認值保留為原始列。您可以在其中添加更多條件,并將 OR 語句用 | 括在括號中。(管道)分離器。IE[(df['Flag'] == 1 | df['Flag'] == 2)]


         Date  val_1  val_2   Flag

0  2018-08-27  221.0  121.0    0.0

1  2018-08-28  222.0  122.0  222.0

2  2018-08-29  223.0  123.0    0.0

3  2018-08-30  224.0  124.0  124.0

4  2018-08-31  225.0  125.0    0.0


查看完整回答
反對 回復 2022-10-11
?
HUWWW

TA貢獻1874條經(jīng)驗 獲得超12個贊

國際大學聯(lián)盟:


new_vals = df.lookup(df.index, df.columns[df.Flag-1])


df['Flag'] = df.Flag.mask(df.Flag>0, new_val)

注意:正如@Erfan 所評論的,這也可以:


df['Flag'] = df.lookup(df.index, df.columns[df.Flag-1])

輸出:


            val_1  val_2  Flag

Date                          

2018-08-27  221.0  121.0     0

2018-08-28  222.0  122.0   222

2018-08-29  223.0  123.0     0

2018-08-30  224.0  124.0   124

2018-08-31  225.0  125.0     0


查看完整回答
反對 回復 2022-10-11
  • 3 回答
  • 0 關(guān)注
  • 139 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號