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

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

如何轉(zhuǎn)發(fā)填充 C# 數(shù)據(jù)框中的缺失值

如何轉(zhuǎn)發(fā)填充 C# 數(shù)據(jù)框中的缺失值

C#
楊__羊羊 2023-09-09 16:45:47
我正在嘗試在 Deedle C# 數(shù)據(jù)框中轉(zhuǎn)發(fā)填充值,就像在 python 中使用 pandas.ffill() 函數(shù)一樣。pandas 中的前向填充允許在行索引和列索引處前向填充。我想在 Deedle 中做同樣的事情,在同一行但從不同的列中獲取最近的非缺失值,因此跨行,這在 python 和 pandas 中非常簡單。我對 C# 和 Deedle 庫都很陌生,我在文檔中能找到的只是如何在一系列內(nèi)而不是跨數(shù)據(jù)幀轉(zhuǎn)發(fā)填充值。非常感謝任何幫助,我對此很陌生,而且我似乎無法在任何地方找到該庫的任何實質(zhì)性示例。這是我的數(shù)據(jù)框的示例,我正在嘗試向前填充各行的值。因此,col3 中缺失值的填充值將成為 col2 同一行中的最后一個值,等等。-------- rawDF ------col1 col2 col3AAA  BBB    CCC  DDD  EEEFFF     BBB  AAA    DDD  CCC    EEE  FFFAAA     BBB  CCC    AAA     FFF  AAA    DDD Deedle 文檔中針對 C# 和 F# 提供的示例僅填充所示系列中的值。如果我嘗試 FillMissing(); 在整個數(shù)據(jù)框中我什么也沒返回。//Fill with previous available value in the seriesvar fillFwd = col2.FillMissing(Direction.Forward);fillFwd.Print();//Fill with the next available valuevar fillBwd = col2.FillMissing(Direction.Backward);fillBwd.Print()---- nothing happens with the following ----//forward fill all values in the DFrawDF.FillMissing(Direction.Forward);rawDF.Print();//backward fill all values in the DF//fill values in the DF with a constant valuerawDF.FillMissing(0);rawDF.Print();
查看完整描述

1 回答

?
慕容3067478

TA貢獻(xiàn)1773條經(jīng)驗 獲得超3個贊

首先,您調(diào)用rawDf.FillMissing然后打印的第二組示例rawDF不會執(zhí)行任何操作,因為 Deedle 數(shù)據(jù)幀(大部分)是不可變的。諸如FillMissing返回新的(填充的)數(shù)據(jù)框之類的操作并且不修改原始數(shù)據(jù)框。因此,使用操作的正確方法就像在第一組示例中一樣,將結(jié)果分配給一個新變量,然后打印它。

我遇到的第二個問題是,當(dāng)您從(例如)CSV 文件讀取示例數(shù)據(jù)時,文件中的空字符串不會被視為缺失值,而是被視為有效(空)字符串值。如果您使用Select空字符串并將其轉(zhuǎn)換為:,Deedle 可以將這些值視為缺失值null

var df = Frame.ReadCsv("C:/temp/aa.csv");
var dfEmpty = df.SelectValues((string s) => (s == "") ? null : s);

FillMissing現(xiàn)在,當(dāng)您像以前一樣使用該操作時,您應(yīng)該會看到發(fā)生了一些事情:

var fillFwd = dfEmpty.FillMissing(Direction.Backward);
fillFwd.Print();

正如您正確指出的那樣,這并沒有達(dá)到您想要的效果 - 它從上到下填充值。您想從左到右填充數(shù)據(jù)。一種方法是使用Select它來單獨轉(zhuǎn)換每一行:

var fillRight = Frame.FromRows(dfEmpty.Rows.Select(row => 
  row.Value.FillMissing(Direction.Forward)));
fillRight.Print();

您還可以轉(zhuǎn)置數(shù)據(jù)框,然后填充缺失的值,然后將其轉(zhuǎn)回(這是表達(dá)您需要的內(nèi)容的很好的方式,但轉(zhuǎn)置可能比僅使用更耗時)Select

var fillRight = dfEmpty.Transpose().FillMissing(Direction.Forward).Transpose()


查看完整回答
反對 回復(fù) 2023-09-09
  • 1 回答
  • 0 關(guān)注
  • 109 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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