df.loc [:, reversed(colnames)]和df.loc [:, list(reversed(colnames))]之间的区别

时间:2019-04-12 17:01:57

标签: python pandas dataframe anaconda

df.loc[:, reversed(colnames)]可以从df中检索切片,但是不能用于分配给df。为了分配给df切片,我必须使用df.loc[:, list(reversed(colnames))]

观察以下代码和输出以进行澄清:

import pandas as pd
import numpy as np

df = pd.DataFrame(
        {'a':list('asdf'), 'b':range(4)}
        )

print('df==', df, sep='\n')

colnames = ['a', 'b']

print('\ndf.loc[:, reversed(colnames)]:', df.loc[:, reversed(colnames)], sep='\n')

df.loc[:, reversed(colnames)] = np.nan
print('\ndf after df.loc[:, reversed(colnames)]=np.nan:', df, sep='\n')

df.loc[:, list(reversed(colnames))] = np.nan
print('\ndf after df.loc[:, list(reversed(colnames))]=np.nan:', df, sep='\n')

和输出:

df==
   a  b
0  a  0
1  s  1
2  d  2
3  f  3

df.loc[:, reversed(colnames)]:
   b  a
0  0  a
1  1  s
2  2  d
3  3  f

df after df.loc[:, reversed(colnames)]=np.nan:
   a  b
0  a  0
1  s  1
2  d  2
3  f  3

df after df.loc[:, list(reversed(colnames))]=np.nan:
    a   b
0 NaN NaN
1 NaN NaN
2 NaN NaN
3 NaN NaN

此行为是新的。使用Anaconda 2018.12时,我不必list()进行分配,最近我已升级到Anaconda 2019.03。

我想知道是什么原因导致的。

0 个答案:

没有答案