我可以有一个列表获得[y, z]
在同一时间与这样的理解列表?
default_list = [y,z for x,y,z in df_acc[['acc_number', 'password', 'server']].values if x == default_acc]
可以,但需要嵌套for
:
>>> default_list = [elem for x,y,z in df_acc[['acc_number', 'password', 'server']].values
for elem in (x, y) if x == default_acc]
但是如果它是一个DataFrame,那么这样做会更有效:
>>> df_acc.loc[df['acc_number'].eq(default_acc), ['acc_number', 'password']].stack().tolist()
如果你特别想要list comprehension
,有其他的选择,不去嵌套循环,使用itertools.chain.from_iterable
>>> from itertools import chain
>>> list(chain.from_iterable((y,z)
for x,y,z in df_acc[['acc_number', 'password', 'server']].values
if x == default_acc))
此外,如果您使用的是pandas 0.24.0+版本,当从dataframe
转换到numpy
数组时,考虑切换到pandas.DataFrame.to_numpy()
而不是pandas.DataFrame.values
,按照pandas
的建议,可以在这里和这里看到