该表有 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/