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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

根據(jù)其他列的值將值分配給數(shù)據(jù)框列的正確方法

根據(jù)其他列的值將值分配給數(shù)據(jù)框列的正確方法

繁花不似錦 2022-12-06 16:39:05
我有一個(gè)看起來(lái)像這樣的數(shù)據(jù)框:   a     b      c0  A   1.0   10.01  B   2.0   20.02  C   3.0   30.03  A   4.0   40.04  B   5.0   50.05  C   6.0   60.06  A   7.0   70.07  B   8.0   80.08  C   9.0   90.09  A  10.0  100.0我想創(chuàng)建一個(gè) 'd' 列,其值取決于 'a',這樣如果 'a' 列的值在 ['A','B'] 中,則 'd' 列獲取 'b' 中的值或否則它獲得'c'中的值。我想要的結(jié)果是:   a     b      c     d0  A   1.0   10.0   1.01  B   2.0   20.0   2.02  C   3.0   30.0  30.03  A   4.0   40.0   4.04  B   5.0   50.0   5.05  C   6.0   60.0  60.06  A   7.0   70.0   7.07  B   8.0   80.0   8.08  C   9.0   90.0  90.09  A  10.0  100.0  10.0我努力了:df["d"] = np.nanfor i in range(df.shape[0]):    if df.a.iloc[i] in ['A','B']:        df.d.iloc[i] = df.b.iloc[i]    elif df.a.iloc[i] in ['C']:        df.d.iloc[i] = df.c.iloc[i]這給了我想要的答案,但我得到了錯(cuò)誤,“SettingWithCopyWarning:試圖在 DataFrame 的切片副本上設(shè)置一個(gè)值”我也知道 for 循環(huán)并不理想,所以我嘗試使用布爾掩碼來(lái)執(zhí)行此操作,但是print(df.a in ['A','B'])給我警告,“ValueError:系列的真值不明確。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()?!盿) 修復(fù) for 循環(huán)或 b) 用更優(yōu)雅的東西替換 for 循環(huán)的最佳方法是什么?我花了一個(gè)小時(shí)通過(guò) SO,但我找不到針對(duì)我的特定問(wèn)題的好答案。任何幫助表示贊賞。
查看完整描述

2 回答

?
鴻蒙傳說(shuō)

TA貢獻(xiàn)1865條經(jīng)驗(yàn) 獲得超7個(gè)贊

您可以使用np.where

In [1696]: df['d'] = np.where(df['a'].isin(['A', 'B']), df['b'], df['c'])     

In [1697]: df 

Out[1697]: 

   a     b      c     d

0  A   1.0   10.0   1.0

1  B   2.0   20.0   2.0

2  C   3.0   30.0  30.0

3  A   4.0   40.0   4.0

4  B   5.0   50.0   5.0

5  C   6.0   60.0  60.0

6  A   7.0   70.0   7.0

7  B   8.0   80.0   8.0

8  C   9.0   90.0  90.0

9  A  10.0  100.0  10.0


查看完整回答
反對(duì) 回復(fù) 2022-12-06
?
九州編程

TA貢獻(xiàn)1785條經(jīng)驗(yàn) 獲得超4個(gè)贊

您可以使用isin和np.select:


df['d'] = np.select( (df.a.isin(['A','B']), df.a.eq('C')),

                    (df.b, df.c), np.nan)

如果a列A,B,C僅包含示例數(shù)據(jù)中所示的值,您可以簡(jiǎn)單地使用np.where:


df['d'] = np.where(df.a.isin(['A','B']), df.b, df.c)


# or

# df['d'] = np.where(df.a.eq('C'), df.c, df.b)


查看完整回答
反對(duì) 回復(fù) 2022-12-06
  • 2 回答
  • 0 關(guān)注
  • 122 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

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