概述
df = pd.DataFrame({'n': np.random.randint(1,10,size = 10000)})
@H_419_8@df[df.n % 2 == 0].iloc[0]
@H_419_8@但是这涉及很多操作(生成索引f.n%2 == 0,在这些索引上评估df并最终获取第一项)并且非常慢.像这样的循环要快得多:
for j in range(len(df)): if df.n.iloc[j] % 2 == 0: break
@H_419_8@也因为第一个结果可能在前几行.是否有任何pandas方法以相似的性能执行此操作?谢谢.
注意:这个条件(是一个偶数)只是一个例子.我正在寻找适用于价值观的任何条件的解决方案,即快速单线替代:
df[ conditions on df.n ].iloc[0]
@H_419_8@
df[df.n % 2 == 0].iloc[0]
@H_419_8@但是这涉及很多操作(生成索引f.n%2 == 0,在这些索引上评估df并最终获取第一项)并且非常慢.像这样的循环要快得多:
for j in range(len(df)): if df.n.iloc[j] % 2 == 0: break
@H_419_8@也因为第一个结果可能在前几行.是否有任何pandas方法以相似的性能执行此操作?谢谢.
注意:这个条件(是一个偶数)只是一个例子.我正在寻找适用于价值观的任何条件的解决方案,即快速单线替代:
df[ conditions on df.n ].iloc[0]
@H_419_8@
for j in range(len(df)): if df.n.iloc[j] % 2 == 0: break
@H_419_8@也因为第一个结果可能在前几行.是否有任何pandas方法以相似的性能执行此操作?谢谢.
注意:这个条件(是一个偶数)只是一个例子.我正在寻找适用于价值观的任何条件的解决方案,即快速单线替代:
df[ conditions on df.n ].iloc[0]
@H_419_8@
df[ conditions on df.n ].iloc[0]
@H_419_8@
但是这涉及很多操作(生成索引f.n%2 == 0,在这些索引上评估df并最终获取第一项)并且非常慢.像这样的循环要快得多:
也因为第一个结果可能在前几行.是否有任何pandas方法以相似的性能执行此操作?谢谢.
注意:这个条件(是一个偶数)只是一个例子.我正在寻找适用于价值观的任何条件的解决方案,即快速单线替代:
df[df.n % 2 == 0].iloc[0]
@H_419_8@但是这涉及很多操作(生成索引f.n%2 == 0,在这些索引上评估df并最终获取第一项)并且非常慢.像这样的循环要快得多:
for j in range(len(df)): if df.n.iloc[j] % 2 == 0: break
@H_419_8@也因为第一个结果可能在前几行.是否有任何pandas方法以相似的性能执行此操作?谢谢.
注意:这个条件(是一个偶数)只是一个例子.我正在寻找适用于价值观的任何条件的解决方案,即快速单线替代:
df[ conditions on df.n ].iloc[0]
@H_419_8@
for j in range(len(df)): if df.n.iloc[j] % 2 == 0: break
@H_419_8@也因为第一个结果可能在前几行.是否有任何pandas方法以相似的性能执行此操作?谢谢.
注意:这个条件(是一个偶数)只是一个例子.我正在寻找适用于价值观的任何条件的解决方案,即快速单线替代:
df[ conditions on df.n ].iloc[0]
@H_419_8@
df[ conditions on df.n ].iloc[0]
@H_419_8@
但是这涉及很多操作(生成索引f.n%2 == 0,在这些索引上评估df并最终获取第一项)并且非常慢.像这样的循环要快得多:
也因为第一个结果可能在前几行.是否有任何pandas方法以相似的性能执行此操作?谢谢.
注意:这个条件(是一个偶数)只是一个例子.我正在寻找适用于价值观的任何条件的解决方案,即快速单线替代:
但是这涉及很多操作(生成索引f.n%2 == 0,在这些索引上评估df并最终获取第一项)并且非常慢.像这样的循环要快得多:
for j in range(len(df)): if df.n.iloc[j] % 2 == 0: break
@H_419_8@也因为第一个结果可能在前几行.是否有任何pandas方法以相似的性能执行此操作?谢谢.
注意:这个条件(是一个偶数)只是一个例子.我正在寻找适用于价值观的任何条件的解决方案,即快速单线替代:
df[ conditions on df.n ].iloc[0]
@H_419_8@
df[ conditions on df.n ].iloc[0]
@H_419_8@
也因为第一个结果可能在前几行.是否有任何pandas方法以相似的性能执行此操作?谢谢.
注意:这个条件(是一个偶数)只是一个例子.我正在寻找适用于价值观的任何条件的解决方案,即快速单线替代:
也因为第一个结果可能在前几行.是否有任何pandas方法以相似的性能执行此操作?谢谢.
注意:这个条件(是一个偶数)只是一个例子.我正在寻找适用于价值观的任何条件的解决方案,即快速单线替代:
df[ conditions on df.n ].iloc[0]
@H_419_8@
df = pd.DataFrame({'n': np.random.randint(1,size = 10000)}) %timeit df[df.n % 2 == 0].iloc[0] %timeit df.iloc[next(k for k,v in df.iterrows() if v.n % 2 == 0)] %timeit df.iloc[next(t[0] for t in df.itertuples() if t.n % 2 == 0)]
@H_419_8@我明白了:
1000 loops,best of 3: 1.09 ms per loop 1000 loops,best of 3: 619 µs per loop # <-- iterrows generator 1000 loops,best of 3: 1.1 ms per loop 10000 loops,best of 3: 25 µs per loop # <--- your solution
@H_419_8@但是当你调整大小时:
df = pd.DataFrame({'n': np.random.randint(1,size = 1000000)})
@H_419_8@差异消失了:
10 loops,best of 3: 40.5 ms per loop 10 loops,best of 3: 40.7 ms per loop # <--- iterrows 10 loops,best of 3: 56.9 ms per loop
@H_419_8@您的解决方案是最快的,那么为什么不使用它呢?
for j in range(len(df)): if df.n.iloc[j] % 2 == 0: break
@H_419_8@
1000 loops,best of 3: 1.09 ms per loop 1000 loops,best of 3: 619 µs per loop # <-- iterrows generator 1000 loops,best of 3: 1.1 ms per loop 10000 loops,best of 3: 25 µs per loop # <--- your solution
@H_419_8@但是当你调整大小时:
df = pd.DataFrame({'n': np.random.randint(1,size = 1000000)})
@H_419_8@差异消失了:
10 loops,best of 3: 40.5 ms per loop 10 loops,best of 3: 40.7 ms per loop # <--- iterrows 10 loops,best of 3: 56.9 ms per loop
@H_419_8@您的解决方案是最快的,那么为什么不使用它呢?
for j in range(len(df)): if df.n.iloc[j] % 2 == 0: break
@H_419_8@
df = pd.DataFrame({'n': np.random.randint(1,size = 1000000)})
@H_419_8@差异消失了:
10 loops,best of 3: 40.5 ms per loop 10 loops,best of 3: 40.7 ms per loop # <--- iterrows 10 loops,best of 3: 56.9 ms per loop
@H_419_8@您的解决方案是最快的,那么为什么不使用它呢?
for j in range(len(df)): if df.n.iloc[j] % 2 == 0: break
@H_419_8@
10 loops,best of 3: 40.5 ms per loop 10 loops,best of 3: 40.7 ms per loop # <--- iterrows 10 loops,best of 3: 56.9 ms per loop
@H_419_8@您的解决方案是最快的,那么为什么不使用它呢?
for j in range(len(df)): if df.n.iloc[j] % 2 == 0: break
@H_419_8@
for j in range(len(df)):
if df.n.iloc[j] % 2 == 0:
break
@H_419_8@
我明白了:
但是当你调整大小时:
差异消失了:
您的解决方案是最快的,那么为什么不使用它呢?
我明白了:
1000 loops,best of 3: 1.09 ms per loop 1000 loops,best of 3: 619 µs per loop # <-- iterrows generator 1000 loops,best of 3: 1.1 ms per loop 10000 loops,best of 3: 25 µs per loop # <--- your solution
@H_419_8@但是当你调整大小时:
df = pd.DataFrame({'n': np.random.randint(1,size = 1000000)})
@H_419_8@差异消失了:
10 loops,best of 3: 40.5 ms per loop 10 loops,best of 3: 40.7 ms per loop # <--- iterrows 10 loops,best of 3: 56.9 ms per loop
@H_419_8@您的解决方案是最快的,那么为什么不使用它呢?
for j in range(len(df)): if df.n.iloc[j] % 2 == 0: break
@H_419_8@
df = pd.DataFrame({'n': np.random.randint(1,size = 1000000)})
@H_419_8@差异消失了:
10 loops,best of 3: 40.5 ms per loop 10 loops,best of 3: 40.7 ms per loop # <--- iterrows 10 loops,best of 3: 56.9 ms per loop
@H_419_8@您的解决方案是最快的,那么为什么不使用它呢?
for j in range(len(df)): if df.n.iloc[j] % 2 == 0: break
@H_419_8@
10 loops,best of 3: 40.5 ms per loop 10 loops,best of 3: 40.7 ms per loop # <--- iterrows 10 loops,best of 3: 56.9 ms per loop
@H_419_8@您的解决方案是最快的,那么为什么不使用它呢?
for j in range(len(df)): if df.n.iloc[j] % 2 == 0: break
@H_419_8@
for j in range(len(df)):
if df.n.iloc[j] % 2 == 0:
break
@H_419_8@
但是当你调整大小时:
差异消失了:
您的解决方案是最快的,那么为什么不使用它呢?
但是当你调整大小时:
df = pd.DataFrame({'n': np.random.randint(1,size = 1000000)})
@H_419_8@差异消失了:
10 loops,best of 3: 40.5 ms per loop 10 loops,best of 3: 40.7 ms per loop # <--- iterrows 10 loops,best of 3: 56.9 ms per loop
@H_419_8@您的解决方案是最快的,那么为什么不使用它呢?
for j in range(len(df)): if df.n.iloc[j] % 2 == 0: break
@H_419_8@
10 loops,best of 3: 40.5 ms per loop 10 loops,best of 3: 40.7 ms per loop # <--- iterrows 10 loops,best of 3: 56.9 ms per loop
@H_419_8@您的解决方案是最快的,那么为什么不使用它呢?
for j in range(len(df)): if df.n.iloc[j] % 2 == 0: break
@H_419_8@
for j in range(len(df)):
if df.n.iloc[j] % 2 == 0:
break
@H_419_8@
差异消失了:
您的解决方案是最快的,那么为什么不使用它呢?
差异消失了:
10 loops,best of 3: 40.5 ms per loop 10 loops,best of 3: 40.7 ms per loop # <--- iterrows 10 loops,best of 3: 56.9 ms per loop
@H_419_8@您的解决方案是最快的,那么为什么不使用它呢?
for j in range(len(df)): if df.n.iloc[j] % 2 == 0: break
@H_419_8@
for j in range(len(df)):
if df.n.iloc[j] % 2 == 0:
break
@H_419_8@
您的解决方案是最快的,那么为什么不使用它呢?
您的解决方案是最快的,那么为什么不使用它呢?
for j in range(len(df)):
if df.n.iloc[j] % 2 == 0:
break
@H_419_8@
总结
以上是编程之家为你收集整理的python – 在pandas DataFrame中查找(仅)满足给定条件的第一行全部内容,希望文章能够帮你解决python – 在pandas DataFrame中查找(仅)满足给定条件的第一行所遇到的程序开发问题。
如果您也喜欢它,动动您的小指点个赞吧