Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 按ID分组并对一列的值应用条件_Python_Pandas_Dataframe_Jupyter Notebook - Fatal编程技术网

Python 按ID分组并对一列的值应用条件

Python 按ID分组并对一列的值应用条件,python,pandas,dataframe,jupyter-notebook,Python,Pandas,Dataframe,Jupyter Notebook,我是熊猫图书馆的新手,非常感谢您的帮助。 这是我的意见 身份证件 日期 标签 股票 AA 01/26/2020 正确 100 AA 01/27/2020 错误的 200 BB 01/28/2020 错误的 300 BB 01/29/2020 正确 500 BB 01/30/2020 错误的 100 科科斯群岛 01/26/2020 正确 200 科科斯群岛 01/27/2020 错误的 300 科科斯群岛 01/28/2020 错误的 100 科科斯群岛 01/29/2020 正确 400 将双

我是熊猫图书馆的新手,非常感谢您的帮助。 这是我的意见

身份证件 日期 标签 股票 AA 01/26/2020 正确 100 AA 01/27/2020 错误的 200 BB 01/28/2020 错误的 300 BB 01/29/2020 正确 500 BB 01/30/2020 错误的 100 科科斯群岛 01/26/2020 正确 200 科科斯群岛 01/27/2020 错误的 300 科科斯群岛 01/28/2020 错误的 100 科科斯群岛 01/29/2020 正确 400
将双布尔值与
.duplicated()


查看每一个布尔值,我们只需要两者都为真的值

df.assign(ky1=df['LABEL'].eq(True),
         ky2=df.duplicated(subset=['ID'],keep='last')
         )


   ID        DATE  LABEL  STOCK    NEW    ky1    ky2
0  AA  01/26/2020   True    100  100.0   True   True
1  AA  01/27/2020  False    200    NaN  False  False
2  BB  01/28/2020  False    300    NaN  False   True
3  BB  01/29/2020   True    500  500.0   True   True
4  BB  01/30/2020  False    100    NaN  False  False
5  CC  01/26/2020   True    200  200.0   True   True
6  CC  01/27/2020  False    300    NaN  False   True
7  CC  01/28/2020  False    100    NaN  False   True
8  CC  01/29/2020   True    400    NaN   True  False

另一个版本,使用
.groupby()

印刷品:

ID日期标签库存新
0 AA 01/26/2020真实100.0
1 AA 01/27/2020假200南
2 BB 01/28/2020假300南
3 BB 01/29/2020真实500.0
4 BB 01/30/2020假100 NaN
5 CC 01/26/2020真实200.0
6 CC 01/27/2020假300南
7 CC 01/28/2020假100 NaN
8 CC 01/29/2020真实400 NaN

到目前为止,您尝试了什么?您的代码是什么样子的?我尝试了groupby和apply,后来又尝试了transform,但我无法编写lambda函数。看起来您希望使用groupby ID,然后使用运算符“groupby.first”。这将为您提供所需的数据帧。
df.assign(ky1=df['LABEL'].eq(True),
         ky2=df.duplicated(subset=['ID'],keep='last')
         )


   ID        DATE  LABEL  STOCK    NEW    ky1    ky2
0  AA  01/26/2020   True    100  100.0   True   True
1  AA  01/27/2020  False    200    NaN  False  False
2  BB  01/28/2020  False    300    NaN  False   True
3  BB  01/29/2020   True    500  500.0   True   True
4  BB  01/30/2020  False    100    NaN  False  False
5  CC  01/26/2020   True    200  200.0   True   True
6  CC  01/27/2020  False    300    NaN  False   True
7  CC  01/28/2020  False    100    NaN  False   True
8  CC  01/29/2020   True    400    NaN   True  False
m = df.index.isin(
    df[df["LABEL"] == True].reset_index().groupby("ID").index.first()
)
df.loc[m, "NEW"] = df.loc[m, "STOCK"]
print(df)