[英]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.