在python中,如何为DataFrame中所有移位的行移位并填充特定值?
In python, how to shift and fill with a specific values for all the shifted rows in DataFrame?
我有以下数据框。
y = pd.DataFrame(np.zeros((10,1), dtype = 'bool'), columns = ['A'])
y.iloc[[3,5], 0] = True
A
0 False
1 False
2 False
3 True
4 False
5 True
6 False
7 False
8 False
9 False
我想为接下来的三行制作 'True',从上面数据框中找到 'True' 的地方开始。预期结果如下所示。
A
0 False
1 False
2 False
3 True
4 True
5 True
6 True
7 True
8 False
9 False
我可以通过以下方式做到这一点,但我想知道是否有更聪明的方法来做到这一点。
y['B'] = y['A'].shift()
y['C'] = y['B'].shift()
y['D'] = y.any(axis = 1)
y['A'] = y['D']
y = y['A']
提前感谢您的帮助。
我使用参数 limit
将缺失值替换 False
替换为缺失值,最后将 NaN
s 替换为 False
:
y.A = y.A.replace(False, np.nan).ffill(limit=2).fillna(False)
print (y)
A
0 False
1 False
2 False
3 True
4 True
5 True
6 True
7 True
8 False
9 False
Rolling.apply
和 any
的另一个想法是每个 window 测试至少一个 True
:
y.A = y.A.rolling(3, min_periods=1).apply(lambda x: x.any()).astype(bool)
我有以下数据框。
y = pd.DataFrame(np.zeros((10,1), dtype = 'bool'), columns = ['A'])
y.iloc[[3,5], 0] = True
A
0 False
1 False
2 False
3 True
4 False
5 True
6 False
7 False
8 False
9 False
我想为接下来的三行制作 'True',从上面数据框中找到 'True' 的地方开始。预期结果如下所示。
A
0 False
1 False
2 False
3 True
4 True
5 True
6 True
7 True
8 False
9 False
我可以通过以下方式做到这一点,但我想知道是否有更聪明的方法来做到这一点。
y['B'] = y['A'].shift()
y['C'] = y['B'].shift()
y['D'] = y.any(axis = 1)
y['A'] = y['D']
y = y['A']
提前感谢您的帮助。
我使用参数 limit
将缺失值替换 False
替换为缺失值,最后将 NaN
s 替换为 False
:
y.A = y.A.replace(False, np.nan).ffill(limit=2).fillna(False)
print (y)
A
0 False
1 False
2 False
3 True
4 True
5 True
6 True
7 True
8 False
9 False
Rolling.apply
和 any
的另一个想法是每个 window 测试至少一个 True
:
y.A = y.A.rolling(3, min_periods=1).apply(lambda x: x.any()).astype(bool)