我有一个pandas.dataframe列,其中我的前四个值应该填充到同一列中相同顺序下最多200行的其他单元格中。我可以通过循环(for)来完成它,但它不适合用途,因为我会做很多这样的循环,并将占用大量的CPU时间。我正在寻找更高效的东西(可能像追加或 concat ?)。希望我的问题很明确!
这是我的意见:
index y
0 0
1 5
2 5
3 0
4 NaN
5 NaN
6 NaN
7 NaN
8 NaN
...
1456 NaN
这就是我想要的:
index y
0 0
1 5
2 5
3 0
4 0
5 5
6 5
7 0
8 0
...
1456 NaN
谢谢你的帮助!
P.S。感谢您对更新问题的评论!!!
答案 0 :(得分:0)
假设我们按照以下方式创建DataFrame
:
import pandas as pd
import numpy as np
patern = [0,5,5,0]
df = pd.DataFrame(patern + [np.nan]*1453)
您的DataFrame
将成为:
>>> df
0
0 0.0
1 5.0
2 5.0
3 0.0
4 NaN
5 NaN
... ...
1452 NaN
1453 NaN
1454 NaN
1455 NaN
1456 NaN
[1457 rows x 1 columns]
然后,您可以使用DataFrame
功能将patern
与fillna
一起使用以下代码填充到第200行:
df_out = df.fillna(pd.DataFrame(patern*(200/len(patern))))
然后您的输出DataFrame
就像:
>>> df_out
0
0 0.0
1 5.0
2 5.0
3 0.0
4 0.0
5 5.0
6 5.0
7 0.0
8 0.0
9 5.0
10 5.0
... ...
1452 NaN
1453 NaN
1454 NaN
1455 NaN
1456 NaN
[1457 rows x 1 columns]
以下元素决定了您想要的限制:
>>> df_out.loc[199]
0 0.0
Name: 199, dtype: float64
>>> df_out.loc[200]
0 NaN
Name: 200, dtype: float64