if语句中的新数据框。蟒蛇

时间:2019-03-05 15:40:09

标签: python pandas dataframe conditional

这是我遇到问题的代码部分:

for x in range(len(df['Days'])):
    if df['Days'][x]>0 and df['Days'][x]<=30: 
        b = df['Days'][x]
b

我得到的输出是b = 14,这是if语句保存在数据帧列中的最后一个值。我试图获取if语句保持在“ b”中的列的所有值,而不仅仅是最后一个值。

2 个答案:

答案 0 :(得分:1)

您要做的是改为列出一个列表,并将b附加到该列表中。

my_vals = []
for x in range(len(df['Days'])):
    if df['Days'][x]>0 and df['Days'][x]<=30: 
        b = df['Days'][x]
        my_vals.append(b)
my_vals

在您的代码中,您要在每次迭代中更改b,因此它仅存储最新的值。将来,当您尝试存储多个值时,请使用其他数据类型。

答案 1 :(得分:0)

您还可以使用熊猫的过滤功能并使用

values = df.loc[(df['Days'] >= 0) & (df['Days'] <= 30)]

如果您希望这些值作为一个Series而不是一个DataFrame,请使用

values_series = values['Days']

如果您希望将值作为列表而不是系列使用

values_list = list(values_series)