我有以下数据框,我们称之为 df1 :
GOOG AAPL XOM IBM Cash zero
2011-01-10 0.0 0.0 0.0 0.0 -19.900 4
2011-01-11 0.0 0.0 0.0 0.0 0.000 5
2011-01-12 0.0 0.0 0.0 0.0 0.000 5
2011-01-13 0.0 -1500.0 0.0 4000.0 -67392.400 2
它的最后一列表示有多少列包含零值。 我想创建一个新的数据框,其中包含colum zero为 1 小于5的日期;意思是搜索列0中每列4的每一行。
这段代码旨在实现这一目标;
total_columns =trades['zero'].max()-1
trades_impact = trades.index.where(trades['zero'] == total_columns)
这就是我得到的;
DatetimeIndex(['NaT', 'NaT', 'NaT', 'NaT', 'NaT', 'NaT', 'NaT', 'NaT', 'NaT',
'NaT',
...
'NaT', 'NaT', 'NaT', 'NaT', 'NaT', 'NaT', 'NaT', 'NaT', 'NaT',
'NaT'],
dtype='datetime64[ns]', length=245, freq=None)
我期望的输出是:
>>>trades_impact
2011-01-10
2011-01-11
2011-01-12
2011-01-13
trades_impact将是一个新的数据框。
任何帮助都将受到欢迎。
答案 0 :(得分:1)
根据您的描述,我不认为您需要.where()
方法,因为它返回的形状与self(应用它的对象)形状相同。如果条件为 for(int i=0;i<s.length();i++){
if(condition){list.add(s.charAt(i)}
else{
list.remove(String.valueOf(s.charAt(i)));
}
}
,则从self(如果条件为True
)或other
对象(第二个参数)中选择新对象的值。您没有指定其他对象,因此默认为False
。
您获得的结果是与NaN
长度相同的系列,index
为NaT
的每个位置的值为trades['zero'] == total_columns
。
相反,如果您直接使用索引功能,我认为您将获得所需的结果:
False
答案 1 :(得分:0)
您可以在df.index
上使用布尔索引,然后转换为字符串。
df.index[df.zero == 4].astype(str).tolist()