如何根据python中列中的变量位置计算行数
Posted
技术标签:
【中文标题】如何根据python中列中的变量位置计算行数【英文标题】:How to count rows based on the variable position in a column in python 【发布时间】:2018-01-29 11:47:26 【问题描述】:我有一个看起来像这样的数据框:(处理有多种可能的字符变量,我只是为这个问题简化了)
ID Position Treatment
--20AxECvv- 0 A
--20AxECvv- -1 A
--20AxECvv- -2 A
--h9INKewQf- 0 A
--h9INKewQf- -1 B
--h9INKewQf- -2 B
--h9INKewQf- -3 B
--h9INKewQf- -4 B
--h9INKewQf- -5 B
--h9INKewQf- -6 B
--h9INKewQf- -7 B
zZU7a@8jN 0 B
QUeSNEXmdB 0 C
QUeSNEXmdB -1 C
qu72Ql@h79 0 C
我只想用 Python 保留对每个 ID 的最小位置的处理。
结果是:
ID Position Treatment
--20AxECvv- -2 A
--h9INKewQf- -7 B
zZU7a@8jN 0 B
QUeSNEXmdB -1 C
qu72Ql@h79 0 C
我是初学者,我想我必须使用 groupby 并按最小位置过滤,但我知道如何编写它。在此先感谢:)
【问题讨论】:
【参考方案1】:您还可以使用df.sort_values
对数据框进行排序,并使用df.drop_duplicates
删除重复项:
In [795]: df.sort_values('Position').drop_duplicates('ID')
Out[795]:
ID Position Treatment
10 --h9INKewQf- -7 B
2 --20AxECvv- -2 A
13 QUeSNEXmdB -1 C
11 zZU7a@8jN 0 B
14 qu72Ql@h79 0 C
【讨论】:
通过这样做,我有一些 ID 与不同处理的最后一个位置重复。 @AnnaCarrere 好的,顺序不同,但正是您想要的行。 将它应用到整个数据帧时仍然有同样的问题,我不明白为什么 @AnnaCarrere 你确定吗?您正在运行第二个解决方案,对吗?我删除了第一个。 我只是放了一个简化的数据框。我只想要基于第一个位置(即最小的位置)进行相应处理的ID列表(每个唯一值)【参考方案2】:使用 groupby 和 min
df.groupby('ID').min()
【讨论】:
以上是关于如何根据python中列中的变量位置计算行数的主要内容,如果未能解决你的问题,请参考以下文章