gpt4 book ai didi

python - 检查元素的 pandas 数据框的最快方法是什么?

转载 作者:太空宇宙 更新时间:2023-11-03 14:48:13 25 4
gpt4 key购买 nike

对于检查项目的 pandas 数据框列的最佳方法,我有点困惑。

我正在编写一个程序,如果数据框在特定列中包含不允许的元素,则会引发错误。

这是一个例子:

import pandas as pd

raw_data = {'first_name': ['Jay', 'Jason', 'Tina', 'Jake', 'Amy'],
'last_name': ['Jones', 'Miller', 'Ali', 'Milner', 'Cooze'],
'age': [47, 42, 36, 24, 73],
'preTestScore': [4, 4, 31, 2, 3],
'postTestScore': [27, 25, 57, 62, 70]}
df = pd.DataFrame(raw_data, columns = ['first_name', 'last_name', 'age', 'preTestScore', 'postTestScore'])
print(df)

哪些输出

  first_name last_name  age  preTestScore  postTestScore
0 Jay Jones 47 4 27
1 Jason Miller 42 4 25
2 Tina Ali 36 31 57
3 Jake Milner 24 2 62
4 Amy Cooze 73 3 70

如果 last_name 列包含除 JonesMillerAliMilner 之外的任何内容>,或 Cooze,发出警告。

可以使用 pandas.DataFrame.isin,但我不清楚这是最有效的方法。

类似于:

if df.isin('last_name':{'Jones', 'Miller', 'Ali', 'Milner', 'Cooze'}).any() == False:
raise:
ValueError("Column `last_name` includes ill-formed elements.")

最佳答案

我想你可以使用 all检查是否匹配所有值:

if not df['last_name'].isin(['Jones', 'Miller', 'Ali', 'Milner', 'Cooze']).all():
raise ValueError("Column `last_name` includes ill-formed elements.")

issubset 的另一种解决方案:

if not set(['Jones', 'Miller', 'Ali', 'Milner', 'Cooze']).issubset(df['last_name']):
raise ValueError("Column `last_name` includes ill-formed elements.")

时间:

np.random.seed(123)
N = 10000
L = list('abcdefghijklmno')

df = pd.DataFrame({'last_name': np.random.choice(L, N)})
print (df)

In [245]: %timeit df['last_name'].isin(L).all()
The slowest run took 4.73 times longer than the fastest. This could mean that an intermediate result is being cached.
1000 loops, best of 3: 421 µs per loop

In [247]: %timeit set(L).issubset(df['last_name'])
The slowest run took 4.50 times longer than the fastest. This could mean that an intermediate result is being cached.
1000 loops, best of 3: 273 µs per loop

In [248]: %timeit df.loc[~df['last_name'].isin(L), 'last_name'].any()
1000 loops, best of 3: 562 µs per loop

警告:

性能实际上取决于数据 - 行数和不匹配值的数量。

关于python - 检查元素的 pandas 数据框的最快方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47903478/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com