簡體   English   中英

在 Pandas DF 中替換 window

[英]Replace window in Pandas DF

我想替換 dataframe 中等於給定列表的連續行中的值,例如[0, 1, 0]必須用零替換。 因此,例如,如果這將應用於 A 列,則 B 列將是所需的結果:

   A  B
0  2  2
1  1  1
2  0  0
3  1  0
4  0  0
5  4  4

這里第 2、3 和 4 行與模板匹配,因此它們的值更改為 0。

在實踐中,我想用隨着時間的推移測量列來做到這一點。 我想用 3 個或更少的連續測量值替換所有部分(因為它們“太短”)。 因此,這些測量值是 1、2 或 3 行,兩邊各填充一行,值為 0。

我已經嘗試了很多,例如df['A'].replace([0, 1, 0], 0) ,但這顯然用 0 替換了任何 0 或 1。這就是我現在想要的; 只有與 [0, 1, 0] 模板匹配的部分才應替換為 0。

我希望有人可以幫助我,並且我已經清楚地解釋了我的問題。

一種方法是將列轉換為字符串,然后捕獲並將 '010' 替換為 '000',如下所示:

string_a = df['A'].astype(str).str.cat().replace('010', '000')

然后將其轉換回列表並將其分配為 B 列:

df['B'] = list(string_a)

可能有一種更有效的方法來做到這一點。 我對 python 很陌生

問候,

喬治

我最終通過 using.shift() 自己修復了它。 如果你來回移動它,然后在兩個移動版本中 1 與 0 重疊,你可以用 0 替換那個 1 以獲得相同的結果。 這不是一個好的解決方案,因為它並不普遍適用,但它適用於我的情況。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM