python - 生成一个 View 来识别 python 列中特定值的第一个条目和最后一个条目

标签 python python-3.x

该表有 150 000 个条目长,有五列。在特定的列中,有许多重复的条目。列名称是“CNumber”。条目如下:

123
334
233
123
224

..等等。我想生成一个 View ,以便对于特定的 CNumber(例如 123),我想识别第一个条目和最后一个条目。

含义:有一列写着“时间”。因此,在某一天,假设 CNumber“123”被使用了 12 次,因此它在工作表中输入了 12 次。但我只想确定它的第一次和最后一次使用时间,以便我可以计算出它在特定日期在公司场所的时间。

最佳答案

Pandas 解决方案:

#create DataFrame from file
df = pd.read_csv(file)

print(df)
   CNumber  Time
0      123     1
1      334     2
2      123     3
3      123     4
4      224     5

过滤条件boolean indexing :

a = 123
df1 = df[df['CNumber'] == a]
print (df1)
   CNumber  Time
0      123     1
2      123     3
3      123     4

通过使用iloc索引位置来获取过滤列Time的第一个和最后一个值:

first = df1['Time'].iloc[0]
last = df1['Time'].iloc[-1]

print ('For value {} is first time: {} and last time: {}'.format(a, first, last))
For value 123 is first time: 1 and last time: 4

如果需要为所有第一个和最后一个值生成 Dataframe(如果 224 列值等唯一值相同):

df2 = df.groupby('CNumber')['Time'].agg(['first','last'])
print (df2)

         first  last
CNumber             
123          1     4
224          5     5
334          2     2

但是可以仅过滤重复的值:

df3=df[df['CNumber'].duplicated(keep=False)].groupby('CNumber')['Time'].agg(['first','last'])
print (df3)
         first  last
CNumber             
123          1     4

关于python - 生成一个 View 来识别 python 列中特定值的第一个条目和最后一个条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51184276/

相关文章:

python - 获取两个整数列表并创建类型列表对的更快方法

python - python 中 init_ntoa 的字符串到十六进制

python Pandas : How do I create a column given a condition based on another column?

Python调用同一文件夹中的.txt文件

python - 在多个日期窗口上应用 pandas rolling 的更快方法

Python Django 错误 ModuleNotFoundError : No module named 'corsheaders'

python - 如何在我的 JSON 列表中添加新字典

python - Python 中的过滤对象数组

python - 当站点包位于/usr/local 时,何时/如何从/usr 更改python sys.prefix?

Python 查询 - 可迭代的方法?