我有一个dataFrame:
df.head()
Out[374]:
ID Time op1
0 1 1 -0.0007
1 1 2 0.0019
2 1 3 -0.0043
3 1 4 0.0007
4 1 5 -0.0019
ID从1到100运行。 我有一个列表区别:
difference
Out[375]:
[161,
238,
53,
83,
171,...
现在我想在时间中保留那些小于或等于差异中指定的行。例如:对于Id = 1,我想保留行直到Time = 161;对于ID = 2,我想保持行直到时间= 238,依此类推。有什么帮助吗?
答案 0 :(得分:2)
我认为您需要使用map
为enumerate
创建字典,与Time
列进行比较并按boolean indexing
过滤:
print (df)
ID Time op1
0 1 1 -0.0007
1 1 2 0.0019
2 1 3 -0.0043
3 2 4 0.0007
4 2 5 -0.0019
difference = [2, 6, 53, 83]
d = dict(enumerate(difference, 1))
print (d)
{1: 2, 2: 6, 3: 53, 4: 83}
df = df[df['Time'] < df['ID'].map(d)]
print (df)
ID Time op1
0 1 1 -0.0007
3 2 4 0.0007
4 2 5 -0.0019
<强>详细强>:
print (df['ID'].map(d))
0 2
1 2
2 2
3 6
4 6
Name: ID, dtype: int64