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

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

識別 Pandas DataFrame 中每一行的第一個(gè)和所有非零值

識別 Pandas DataFrame 中每一行的第一個(gè)和所有非零值

臨摹微笑 2023-05-23 10:18:01
我有一個(gè)類似于以下內(nèi)容的 Pandas DataFramedata=pd.DataFrame([['Juan',0,0,400,450,500],['Luis',100,100,100,100,100],[ 'Maria',0,20,50,300,500],[ 'Laura',0,0,0,100,900],['Lina',0,0,0,0,10]])data.columns=['Name','Date1','Date2','Date3','Date4','Date5']    Name  Date1  Date2  Date3  Date4  Date50   Juan      0      0    400    450    5001   Luis    100    100    100    100    1002  Maria      0     20     50    300    5003  Laura      0      0      0    100    9004   Lina      0      0      0      0     10我想生成兩個(gè)單獨(dú)的數(shù)據(jù)框。第一個(gè)應(yīng)該在前一個(gè) DataFrame 的非零值的所有位置包含一個(gè) 1,即    Name  Date1  Date2  Date3  Date4  Date50   Juan      0      0      1      1      11   Luis      1      1      1      1      12  Maria      0      1      1      1      13  Laura      0      0      0      1      14   Lina      0      0      0      0      1第二個(gè)應(yīng)該在每行的第一個(gè)非零值中有一個(gè) 1。    Name  Date1  Date2  Date3  Date4  Date50   Juan      0      0      1      0      01   Luis      1      0      0      0      02  Maria      0      1      0      0      03  Laura      0      0      0      1      04   Lina      0      0      0      0      1我檢查了其他帖子,發(fā)現(xiàn)我可以通過以下方式獲得第一個(gè)out=data.copy()out.iloc[:,1:6]=data.select_dtypes(include=['number']).where(data.select_dtypes(include=['number'])==0,1)有沒有更容易/更簡單的方法來實(shí)現(xiàn)我想要的第一個(gè)結(jié)果?和有誰知道如何實(shí)現(xiàn)第二個(gè)結(jié)果?(當(dāng)然還有一個(gè)雙循環(huán),它逐個(gè)比較數(shù)字,這是我寧愿避免的蠻力方法)
查看完整描述

1 回答

?
守著一只汪

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

首先,您只能選擇數(shù)字列并用in替換非0值,然后為第二個(gè)添加累積總和,比較第一個(gè)值和布爾掩碼轉(zhuǎn)換為整數(shù):1DataFrame.maskaxis=11DataFrame.eqDataFrame.astype

df1, df2 = data.copy(), data.copy()

cols = df1.select_dtypes(include=np.number).columns

df1[cols] = df1[cols].mask(data[cols].ne(0), 1)


df2[cols] = df1[cols].cumsum(axis=1).eq(1).astype(int)

print(df1)

? ? Name? Date1? Date2? Date3? Date4? Date5

0? ?Juan? ? ? 0? ? ? 0? ? ? 1? ? ? 1? ? ? 1

1? ?Luis? ? ? 1? ? ? 1? ? ? 1? ? ? 1? ? ? 1

2? Maria? ? ? 0? ? ? 1? ? ? 1? ? ? 1? ? ? 1

3? Laura? ? ? 0? ? ? 0? ? ? 0? ? ? 1? ? ? 1

4? ?Lina? ? ? 0? ? ? 0? ? ? 0? ? ? 0? ? ? 1


print(df2)

? ? Name? Date1? Date2? Date3? Date4? Date5

0? ?Juan? ? ? 0? ? ? 0? ? ? 1? ? ? 0? ? ? 0

1? ?Luis? ? ? 1? ? ? 0? ? ? 0? ? ? 0? ? ? 0

2? Maria? ? ? 0? ? ? 1? ? ? 0? ? ? 0? ? ? 0

3? Laura? ? ? 0? ? ? 0? ? ? 0? ? ? 1? ? ? 0

4? ?Lina? ? ? 0? ? ? 0? ? ? 0? ? ? 0? ? ? 1


查看完整回答
反對 回復(fù) 2023-05-23
  • 1 回答
  • 0 關(guān)注
  • 176 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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