python - 将前 N 行与 pandas 列中的当前行进行比较

标签 python pandas dataframe

我正在尝试通过考虑前 n 行的值在我的 pandas 数据框中填充一个新列。如果当前值不等于该列中过去 n 个值中的任何一个,则应填充“N”,否则填充“Y”。

请告诉我什么是实现此目标的好方法。

这是我的输入数据:

testdata = {'col1' :['car','car','car','bus','bus','bus','car']}
df = pd.DataFrame.from_dict(testdata)

输入方向:

  col1
0  car
1  car
2  car
3  bus
4  bus
5  car  
6  car

输出 DF(n=2):

  col1   Result
0  car         
1  car         
2  car      Y  
3  bus      N  
4  bus      Y  
5  bus      Y  
6  car      N 

最佳答案

这是我的方式

n=2
l=[False]*n+[df.iloc[x,0] in df.iloc[x-n:x,0].tolist() for x in np.arange(n,len(df))]
df['New']=l
df
  col1    New
0  car  False
1  car  False
2  car   True
3  bus  False
4  bus   True
5  bus   True
6  car  False

关于python - 将前 N 行与 pandas 列中的当前行进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56573008/

相关文章:

python - 从 SciPy 稀疏矩阵填充 Pandas SparseDataFrame

python - 在 python 中传递可选的数据帧参数

python - Pandas groupby : treat two columns as one

python - Pandas - 处理分类数据中的 NaN

python - 从字符串中删除所有换行符

python - 与用户定义的异常相比,内置异常的处理频率如何?

python - 使用 pywinauto 自动执行 MSI 安装程序

python - 使用 mitmproxy 动态修改 HTTPS 响应数据包

Python:根据另一列和行的条件函数创建新列

python - Pandas :选择 groupby.sum() 满足条件的行