全部,
我有一个如下所示的数据框:df[['date','PRICE']]
df>>
date Price
PX_FIRST PX_LAST
2018-03-05 1.710 -0.511
2018-03-06 1.725 -0.513
2018-03-07 1.745 -0.511
2018-03-08 1.750 -0.512
如何获得与此类似的数据框?换句话说,我如何访问 PX_FIRST 和 PX_LAST。当我执行 df[['date','PRICE']]
时,它无法访问各个列。
date PX_FIRST PX_LAST
2018-03-05 1.710 -0.511
2018-03-06 1.725 -0.513
2018-03-07 1.745 -0.511
2018-03-08 1.750 -0.512
最佳答案
如果需要选择第一层Price
值下的列:
df = df['Price']
或者使用DataFrame.xs
:
df = df.xs('Price', axis=1)
print (df)
PX_FIRST PX_LAST
Date
2018-03-05 1.710 -0.511
2018-03-06 1.725 -0.513
2018-03-07 1.745 -0.511
2018-03-08 1.750 -0.512
如果需要删除 MultiIndex
的顶层:
df.columns = df.columns.droplevel(0)
但是如果更多列具有不同的第一级(Price
、Price1
)和第二级相同的值,请小心:
#create sample data
df = pd.concat([df['Price'], df['Price'] * 0.4], keys=('Price','Price1'), axis=1)
print (df)
Price Price1
PX_FIRST PX_LAST PX_FIRST PX_LAST
Date
2018-03-05 1.710 -0.511 0.684 -0.2044
2018-03-06 1.725 -0.513 0.690 -0.2052
2018-03-07 1.745 -0.511 0.698 -0.2044
2018-03-08 1.750 -0.512 0.700 -0.2048
删除第一层:
df.columns = df.columns.droplevel(0)
print (df)
PX_FIRST PX_LAST PX_FIRST PX_LAST
Date
2018-03-05 1.710 -0.511 0.684 -0.2044
2018-03-06 1.725 -0.513 0.690 -0.2052
2018-03-07 1.745 -0.511 0.698 -0.2044
2018-03-08 1.750 -0.512 0.700 -0.2048
如果选择列 PX_FIRST
它返回 DataFrame
,因为重复的列名:
print (df['PX_FIRST'])
PX_FIRST PX_FIRST
Date
2018-03-05 1.710 0.684
2018-03-06 1.725 0.690
2018-03-07 1.745 0.698
2018-03-08 1.750 0.700
如果需要两级选择,使用元组:
print (df[('Price', 'PX_FIRST')])
Date
2018-03-05 1.710
2018-03-06 1.725
2018-03-07 1.745
2018-03-08 1.750
Name: (Price, PX_FIRST), dtype: float64
关于python - 如何使用 Pandas 访问列中的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49656116/