Python 如何在大熊猫的同一艘船上安装连续安装的最古老部分?
我有一个熊猫Python 如何在大熊猫的同一艘船上安装连续安装的最古老部分?,python,pandas,Python,Pandas,我有一个熊猫数据帧,部分安装在船上。 我想为每艘船/零件保留最早的连续安装(见日期)。我该怎么做 输入: | date | boat | part |-------|------|----- | 01/01 | A | C <-- Keep this row because this is first install of C in A | 01/02 | A | C | 01/03 | A | C | 01/04 | A | D <-- Keep th
数据帧
,部分安装在船上。
我想为每艘船
/零件
保留最早的连续安装(见日期
)。我该怎么做
输入:
| date | boat | part
|-------|------|-----
| 01/01 | A | C <-- Keep this row because this is first install of C in A
| 01/02 | A | C
| 01/03 | A | C
| 01/04 | A | D <-- Keep this row because this is first install of D in A
| 01/05 | A | D
| 01/06 | A | C <-- Keep this row because this is first install of C in A after D
| 01/07 | A | C
| 01/08 | A | C
| 01/09 | B | C <-- Keep this row because this is first install of C in B
| 01/10 | B | C
| date | boat | part
|-------|------|-----
| 01/01 | A | C
| 01/04 | A | D
| 01/06 | A | C
| 01/09 | B | C
使用:
详细信息:
首先将连续值与和shift
进行比较:
print (df[['boat','part']].ne(df[['boat','part']].shift()))
boat part
0 True True
1 False False
2 False False
3 False True
4 False False
5 False True
6 False False
7 False False
8 True False
9 False False
然后通过以下方法测试每行至少一个True
:
我如何添加一个条件,即某个列必须为
True
?基本上,对于列X
为True
的行,如何在同一条船上获得连续安装的最旧部分安装?@dunkubok-你认为更改df['boat','part']].ne(df['boat','part'].shift()).any(axis=1)
到df['boat','part'].ne(df['boat','part'].shift()).any(axis=1);(df['col']==1)
用于链接到或的df[['boat','part']].ne(df['boat','part'].shift()).any(axis=1)
到的df['boat','part'].ne(df['boat','part']].shift()).any(axis=1)和(df['col']=1)
用于链接到的
和.ne
。它应该只在具有col==False
@dunkubok的情况下执行.ne
——您能更具体一点吗?也许最好的方法是创建一个新的问题,并导出输出。
print (df[['boat','part']].ne(df[['boat','part']].shift()))
boat part
0 True True
1 False False
2 False False
3 False True
4 False False
5 False True
6 False False
7 False False
8 True False
9 False False
print (df[['boat','part']].ne(df[['boat','part']].shift()).any(axis=1))
0 True
1 False
2 False
3 True
4 False
5 True
6 False
7 False
8 True
9 False
dtype: bool