![](/img/trans.png)
[英]How to only keep rows which have more than one value in a pandas DataFrame?
[英]How to create a dataframe that only selects rows that have value more than avg +/* standard deviation in Pandas?
这是我到目前为止的代码,但我不确定是否应该在确定标准偏差和平均值后加入数据帧。 我目前陷入困境的地方是选择值大于或小于 avg +/1 std 的行。 我只是不知道如何遍历每一列并做到这一点? 我想过一个 for 循环,但不完全确定如何 go 关于它。
import pandas_datareader.data as web
import datetime as date
fromDate ="2014-01-02"
toDate = "2016-01-02"
dfSixMo = web.DataReader('DGS6MO','fred',fromDate,toDate)
dfOneYear = web.DataReader('DGS1','fred',fromDate,toDate)
dfFiveYear = web.DataReader('DGS5','fred',fromDate,toDate)
dfTenYear = web.DataReader('DGS10','fred',fromDate,toDate)
dfJoin1 = dfSixMo.join(dfOneYear,how = 'inner')
dfJoin2 = dfFiveYear.join(dfTenYear,how='inner')
dfFinal = dfJoin1.join(dfJoin2,how='inner')
print(dfFinal)
mean = dfFinal.mean()
print('\nMean:')
print(mean)
StDev = dfFinal.std()
print('\n Standard Deviation:')
print(StDev)
IIUC 这就是你想要的:
#setup
df = pd.DataFrame(np.random.randint(0,10,(3,3)), columns = list('abc'))
# a b c
#0 3 2 8
#1 0 6 7
#2 8 3 9
mean = df.mean()
std = df.std()
df[((mean-std < df) & (df< mean+std)).all(1)]
# a b c
#0 3 2 8
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.