使用特定值填充pandas数据帧单元格

时间:2017-11-05 21:33:09

标签: python pandas

我有一个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。感谢您对更新问题的评论!!!

1 个答案:

答案 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功能将paternfillna一起使用以下代码填充到第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