Python 索引if语句
如果数据帧中的索引大于x,我将尝试创建一个1的新列 但是这个代码不起作用。有人有什么想法吗Python 索引if语句,python,pandas,dataframe,Python,Pandas,Dataframe,如果数据帧中的索引大于x,我将尝试创建一个1的新列 但是这个代码不起作用。有人有什么想法吗 if df.index>=3: df['Step1']=1 else: df['Step1']=0 让我们举一个例子dataframe,如下所示 df = pd.DataFrame({"a":[1,2,3,4,5],"b":[2,4,9,16,25]}) 索引方法打印如下 In [4]: df.index Out[4]: RangeIndex(start=0, stop=5,
if df.index>=3:
df['Step1']=1
else:
df['Step1']=0
让我们举一个例子
dataframe
,如下所示
df = pd.DataFrame({"a":[1,2,3,4,5],"b":[2,4,9,16,25]})
索引方法打印如下
In [4]: df.index
Out[4]: RangeIndex(start=0, stop=5, step=1)
In [5]: df.index>3
Out[5]: array([False, False, False, False, True])
和df.index>3
打印如下
In [4]: df.index
Out[4]: RangeIndex(start=0, stop=5, step=1)
In [5]: df.index>3
Out[5]: array([False, False, False, False, True])
所以,答案是
y = df.index>3
df['new_column'] = y.astype(int)
df
a b new_column
0 1 2 0
1 2 4 0
2 3 9 0
3 4 16 0
4 5 25 1
编辑:
如果要在3到9个索引之间执行
您可以执行以下操作
import numpy as np
np.logical_and(df.index>2, df.index<5)
array([False, False, False, True, True])
将numpy导入为np
np.logical_和(df.index>2,df.index让我们举一个例子dataframe
,如下所示
df = pd.DataFrame({"a":[1,2,3,4,5],"b":[2,4,9,16,25]})
索引方法打印如下
In [4]: df.index
Out[4]: RangeIndex(start=0, stop=5, step=1)
In [5]: df.index>3
Out[5]: array([False, False, False, False, True])
和df.index>3
打印如下
In [4]: df.index
Out[4]: RangeIndex(start=0, stop=5, step=1)
In [5]: df.index>3
Out[5]: array([False, False, False, False, True])
所以,答案是
y = df.index>3
df['new_column'] = y.astype(int)
df
a b new_column
0 1 2 0
1 2 4 0
2 3 9 0
3 4 16 0
4 5 25 1
编辑:
如果要在3到9个索引之间执行
您可以执行以下操作
import numpy as np
np.logical_and(df.index>2, df.index<5)
array([False, False, False, True, True])
将numpy导入为np
np.u和(df.index>2,df.indexhere您正在检查整个df。可能是您应该为每个元素执行此操作。您可以显示更多的代码和收到的错误吗?@fred.schwartz,我回答了您的问题,这有帮助吗?),我使用了一个示例数据框。您可以用从csv@InAFlash是的,那正是我想要的。谢谢很多,真的吗helpful@InAFlash非常感谢。非常有用。您正在检查整个df。可能您应该为每个元素执行此操作。您可以显示更多代码和收到的错误吗?@fred.schwartz,我回答了您的问题,这有帮助吗?我使用了一个示例数据框。您可以用从csv@InAFlash对那正是我想要的。非常感谢。真的helpful@InAFlash非常感谢,非常有用