如何在Python中将具有特定值的行添加到数据框

时间:2020-06-15 18:10:46

标签: python pandas numpy dataframe

比方说,我有以下由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,而不是保持不变。

3 个答案:

答案 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)