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

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

在 C# DataFrame 中查找數(shù)組值(相當于 Python 中的 .isin)?

在 C# DataFrame 中查找數(shù)組值(相當于 Python 中的 .isin)?

楊魅力 2023-06-06 16:12:42
我想將運行良好的 Python 腳本轉(zhuǎn)換為 C#。我有一個 C# DataFrame,使用Microsoft.Data.Analysis;庫。列名是 [time] , [site], [samples], [temperature]我需要處理兩個順序任務:將具有相同 [time] 和 [site] 的行分組 --> 對 [sample] 中的值求和,并僅保留 [temperature] 列的 1 個值,最后一個。在 Python (Pandas) 中,我這樣做了:dF_out= df_in.groupby(['time','site'], as_index=False).agg({'sample':'sum', 'temperature':'last'})查找 [sample] 的匹配值與整數(shù)常量數(shù)組中的任何(所有?。┲担?Python 中,我完成了以下操作:df_out= df_out.loc[df_out['samples'].isin(int_array)]在我更有信心的 Python 中,方法.GrouBy(...) .isin(...)方法很簡單,并且在 Pandas 文檔中有很好的描述。誰能幫助我以最有效的方式在 C# 中轉(zhuǎn)換它?先感謝您
查看完整描述

2 回答

?
斯蒂芬大帝

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

  1. 通過索引器訪問行值,然后按時間和站點進行分組。

  2. 假設第二個任務在第一個任務之后,您可以在一個操作中執(zhí)行兩個Select()任務:

  • 對本地分組的樣本求和,保存為SamplesSum.?為了總結(jié)它,您需要轉(zhuǎn)換為適當?shù)念愋停乙源?code>int為例。

  • 從最后一個分組條目中獲取最后一個溫度,將其保存為LastTemperature

  • int_array最后,創(chuàng)建兩個集合(和本地樣本分組)的交集,將其保存為MatchingValues.?在這里,從數(shù)據(jù)框行中選擇樣本值時也不要忘記正確的轉(zhuǎn)換

我有點擔心在沒有先排序的情況下選擇最后一個溫度。最后一個將只是分組中的最后一個,不確定它是最小值還是最大值。

var int_array = new int[] { 1, 2, 3 };

var dF_out = df_in.Rows

? ? .GroupBy(row => new { Time = row[0], Site = row[1] })

? ? .Select(group => new

? ? {

? ? ? ? SamplesSum = group.Sum(row => (int)row[2]),

? ? ? ? LastTemperature = group.Last()[3],

? ? ? ? MatchingValues = int_array.Intersect(group.Select(row => (int)row[2])),

? ? });

結(jié)果dF_out集合將具有這樣的結(jié)構(gòu):


[

? ?{

? ? ? "SamplesSum":25,

? ? ? "LastTemperature":28.0,

? ? ? "MatchingValues":[

? ? ? ? ?21,

? ? ? ? ?4

? ? ? ]

? ?},

? ?{

? ? ? "SamplesSum":3,

? ? ? "LastTemperature":27.0,

? ? ? "MatchingValues":[

? ? ? ? ?3

? ? ? ]

? ?}

]


查看完整回答
反對 回復 2023-06-06
?
SMILET

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

我經(jīng)歷了類似的任務,所以我可以為其他讀者報告一個可能的解決方案:


using System.Linq;

using Microsoft.Data.Analysis;


// Assume that df_in is a DataFrame with columns [time], [site], [samples], and [temperature]


var df_out = df_in.AsEnumerable()

    .GroupBy(row => new { Time = row.Field<DateTime>("time"), Site = row.Field<string>("site") })

    .Select(g => new

    {

        Time = g.Key.Time,

        Site = g.Key.Site,

        Samples = g.Sum(row => row.Field<int>("samples")),

        Temperature = g.Last().Field<float>("temperature")

    })

    .ToDataFrame();

然后是第二個任務,


using System.Linq;


// Assume that df_out is a DataFrame with a column [samples] and int_array is an array of integers


var filtered_df = df_out.AsEnumerable()

    .Where(row => int_array.Any(i => i == row.Field<int>("samples")))

    .ToDataFrame();


查看完整回答
反對 回復 2023-06-06
  • 2 回答
  • 0 關(guān)注
  • 235 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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