Tôi có một bộ dữ liệu như thế này:
Mẫu dữ liệu mẫu
import pandas as pd
df = pd.DataFrame({
'names': ['A','B','C','D','E','F','G','H','I','J','K','L'],
'col1': [0, 1, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0],
'col2': [0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0]})
Tôi muốn thay thế một số 0trong col1và col2bằng 1, nhưng không thay thế một số 0nếu ba hoặc nhiều hơn 0liên tiếp trong cùng một cột. Làm thế nào điều này có thể được thực hiện với gấu trúc?
Bộ dữ liệu gốc:
names col1 col2
A 0 0
B 1 0
C 0 0
D 1 0
E 1 1
F 1 0
G 0 1
H 0 0
I 0 1
J 1 0
K 0 0
L 0 0
Bộ dữ liệu mong muốn:
names col1 col2
A 1 0
B 1 0
C 1 0
D 1 0
E 1 1
F 1 1
G 0 1
H 0 1
I 0 1
J 1 0
K 1 0
L 1 0
df.loc[(df['col1']+df['col1'].shift(1)+df['col1'].shift(2)>0)&(df['col1']+df['col1'].shift(1)+df['col1'].shift(-1)>0)&(df['col1']+df['col1'].shift(-1)+df['col1'].shift(-2)>0)]=1 tuy nhiên, điều này khiến hai hàng đầu tiên và cuối cùng không bị ảnh hưởng
col2?