比方说,我有以下由x值组成的df,其概率以x = 19开始,以x = 64结尾。
x probability
0 19.0 1.000000
1 20.0 1.000000
2 21.0 1.000000
3 22.0 1.000000
...
40 60.0 0.000000
41 62.0 0.500000
42 63.0 1.000000
43 64.0 0.000000
我想做的是添加从x = 65到x = 100的行,并使它们的所有概率均等于0,如下所示:
x probability
0 19.0 1.000000
1 20.0 1.000000
2 21.0 1.000000
3 22.0 1.000000
4 23.0 1.000000
...
43 64.0 0.000000
44 65.0 0.000000
43 66.0 0.000000
44 67.0 0.000000
...
73 97.0 0.000000
78 98.0 0.000000
79 99.0 0.000000
80 100.0 0.000000
同样,我只想将65到100的连续x值相加,概率为0。我不太确定如何添加像这样的行,因此对您有所帮助。谢谢!
注意:这个问题类似于add specific number of rows to dataframe (python),但我希望x列中的值每次都增加1,而不是保持不变。
答案 0 :(得分:3)
只需创建第二个数据框并附加df.append()
您的数据框可以使用
创建df = pd.DataFrame({'x':np.arange(19, 65)})
df['probability'] = 1
创建第二个数据框,然后将其附加到第一个数据框
max_x = df['x'].max()
df_append = pd.DataFrame({'x':np.arange(max_x, 101)})
df_append['probability'] = 0
df_res = df.append(df_append)
答案 1 :(得分:1)
我们可以做reindex
df_new=df.set_index('x').reindex(np.arange(df.x.min(),100+1),method='ffill').reset_index()
答案 2 :(得分:0)
您可以使用for循环生成列表,并在数据框后附加df.append(...)
x = []
probabilities = []
for i in range(65,101):
x.append(i)
probabilities.append(0)
new_df = pd.DataFrame({'x':x,'probabilites':probabilities})
df.append(new_df, ignore_index=True)