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

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

替換行中的最后一個(gè)非 NaN 值

替換行中的最后一個(gè)非 NaN 值

茅侃侃 2023-03-08 14:26:25
我想用 NaN 值替換數(shù)據(jù)框中行中所有最后的非 NaN。我的數(shù)據(jù)框中有 300 行和 1068 列。并且每一行都有不同數(shù)量的有效值,并用 NaN 填充。這是一行的示例:dataframe 中的一行 = [1 2 3 NaN NaN NaN] output =[1 2 NaN NaN NaN NaN]如何替換 CSV 文件中行中的最后一個(gè)非 NaN 值?
查看完整描述

2 回答

?
慕姐4208626

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

這是一個(gè)基于 numpy 的:


import numpy as np

df = pd.DataFrame([[1, 2, 3, np.nan, np.nan, np.nan], [1, 2, 3, np.nan, np.nan, 2]])

您可以對(duì)值數(shù)組進(jìn)行切片,并將其倒序排列,然后查找第一個(gè)有效值。然后獲取索引,并使用np.put_along_axis將它們?cè)O(shè)置為NaNs:


a = df.to_numpy()

m = a.shape[1]-1 - np.argmax(~np.isnan(a[:,::-1]), axis=1)

np.put_along_axis(a, m[:,None], np.nan, axis=1)

df[:] = a

print(df)


     0    1    2   3   4   5

0  1.0  2.0  NaN NaN NaN NaN

1  1.0  2.0  3.0 NaN NaN NaN

更多細(xì)節(jié) -


第一步是找到 NaN 的位置。因?yàn)槲覀兿胍詈笠粋€(gè)有效值,所以我們應(yīng)該從最后開始。所以 slice 得到列顛倒的數(shù)組,并使用np.isnan:


np.isnan(a[:,::-1])

array([[ True,  True,  True, False, False, False],

       [False,  True,  True, False, False, False]])

現(xiàn)在我們可以找到第一個(gè)False,即最后一個(gè)有效值,使用np.argmax:


np.argmax(~np.isnan(a[:,::-1]), axis=1)

# array([3, 0], dtype=int64)

現(xiàn)在通過將 col 長(zhǎng)度減去上面我們得到實(shí)際索引:


a.shape[1]-1 - np.argmax(~np.isnan(a[:,::-1]), axis=1)

# array([2, 5], dtype=int64)

現(xiàn)在我們可以將這些索引設(shè)置NaN為對(duì)應(yīng)的索引:


np.put_along_axis(a, m[:,None], np.nan, axis=1)


查看完整回答
反對(duì) 回復(fù) 2023-03-08
?
開滿天機(jī)

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

枚舉列并檢查循環(huán)中的值是否為 NaN:


import pandas as pd

import numpy as np


df = pd.DataFrame([

[1, 2, 3, np.NaN, np.NaN, 2]

], columns=["a", "b", "c", "d", "e", "f"]

)


j = 0

for idx, c in enumerate(df.columns):

    if df[c].isna().any():

        while df.iloc[:, idx - j].isna().any():

            j += 1

        df.iloc[:, idx - j] = np.nan


print(df)

退貨:


   a   b   c   d   e  f

0  1 NaN NaN NaN NaN  2

編輯:插入了太多的 NaN。將嘗試修復(fù)它,否則刪除答案..


查看完整回答
反對(duì) 回復(fù) 2023-03-08
  • 2 回答
  • 0 關(guān)注
  • 141 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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