如何使用.loc对DF进行切片,该列表可能包含索引/列

时间:2017-08-06 15:21:28

标签: python pandas dataframe indexing slice

我有几个列表可能包含在DataFrame的索引/列中找不到的元素。我想使用这些索引获取特定的行/列,以便在索引/列中找不到列表中的元素,然后忽略它。

df1 = pd.DataFrame({"x":[1, 2, 3, 4, 5], 
   "y":[3, 4, 5, 6, 7]}, 
   index=['a', 'b', 'c', 'd', 'e'])

df1.loc[['c', 'd', 'e', 'f'], ['x', 'z']]

我想得到:

     x 
c  3.0
d  4.0
e  5.0

而不是:

     x   z
c  3.0 NaN
d  4.0 NaN
e  5.0 NaN
f  NaN NaN

3 个答案:

答案 0 :(得分:3)

我认为你需要Index.intersection

var yesterdayIndicators = (from id in Indicator
                               where id.Ticker == symbol
                               && id.Date_Time.Date == prevDateTime
                               select id).ToList();

答案 1 :(得分:1)

我相信你可以删除包含所有空值的行和列。

>>> df1.loc[['c', 'd', 'e', 'f'], ['x', 'z']].dropna(how='all').dropna(how='all', axis=1)
   x
c  3
d  4
e  5

答案 2 :(得分:1)

使用filter功能:

row_index = ['c', 'd', 'e', 'f']
col_index = ['x', 'z']

df1.filter(row_index, axis=0).filter(col_index, axis=1)
#   x
#c  3
#d  4
#e  5