我正在使用Python3.11.1.我有这样的数据存储在Pandas 数据帧中:

ID  Position    Select
1      A          0
2      B          1
2      C          0
3      B          0
3      C          0
4      A          1
5      A          0

其中一些ID记录在多行中,而其他ID只出现在一行中.我需要通过将所有单个ID行的编码为1来 Select 该数据集,并且如果这些多行中的任何一行为相同ID的 Select 而将其编码为1,则保留所有多个ID行.

ID  Position    Select
2      B          1
2      C          0
4      A          1

做这件事最好的方法是什么?

最终,我需要从长到宽的形式转换.因此,最终结果应该是:

ID  Position1   Position2  Select
2      B            C        1
4      A                     1

先谢谢你.

推荐答案

try :

u = df.groupby("ID").filter(lambda x: (x.Select == 1).any())  # or just `lambda x: x.Select.any()` if there are only 0/1 values
print(u)

打印:

   ID Position  Select
1   2        B       1
2   2        C       0
5   4        A       1

转到长格式:

u["col"] = u.groupby("ID").cumcount() + 1
s = u.groupby("ID")["Select"].any().astype(int)

u = u[["ID", "col", "Position"]].pivot(index="ID", columns="col")
u.columns = [f"{c[0]}{c[1]}" for c in u.columns]
print(pd.concat([u, s], axis=1).fillna("").reset_index())

打印:

   ID Position1 Position2  Select
0   2         B         C       1
1   4         A                 1

Python相关问答推荐

有没有办法清除气流中的僵尸

将大小为n*512的数组绘制到另一个大小为n*256的数组的PC组件

来自ARIMA结果的模型方程

如何在Power Query中按名称和时间总和进行分组

合并同名列,但一列为空,另一列包含值

如何让pyparparsing匹配1天或2天,但1天和2天失败?

过载功能是否包含Support Int而不是Support Int?

无法使用python.h文件; Python嵌入错误

使用GEKKO在简单DTE系统中进行一致初始化

如何从具有多个嵌入选项卡的网页中Web抓取td类元素

log 1 p numpy的意外行为

try 将一行连接到Tensorflow中的矩阵

Pandas DataFrame中行之间的差异

driver. find_element无法通过class_name找到元素'""

将pandas导出到CSV数据,但在此之前,将日期按最小到最大排序

isinstance()在使用dill.dump和dill.load后,对列表中包含的对象失败

如何在FastAPI中为我上传的json文件提供索引ID?

在极中解析带有数字和SI前缀的字符串

手动设置seborn/matplotlib散点图连续变量图例中显示的值

Pandas:计算中间时间条目的总时间增量