草庐IT

pandas-datareader

全部标签

python - 如何检查 float pandas 列是否只包含整数?

我有一个数据框df=pd.DataFrame(data=np.arange(10),columns=['v']).astype(float)如何确保v中的数字是整数?我非常担心舍入/截断/浮点表示错误 最佳答案 与astype(int)比较暂时将您的列转换为int并使用np.array_equal进行测试:np.array_equal(df.v,df.v.astype(int))Truefloat.is_integer您可以将此python函数与apply结合使用:df.v.apply(float.is_integer).all()

Python Pandas 系列日期时间到纪元以来的秒数

遵循thisanswer的精神,我尝试了以下操作,将日期时间的DataFrame列转换为纪元以来的秒数列。df['date']=(df['date']+datetime.timedelta(hours=2)-datetime.datetime(1970,1,1))df['date'].map(lambdatd:td.total_seconds())第二个命令导致以下错误,我不明白。对这里可能发生的事情有什么想法吗?我用apply替换了map,但这无济于事。------------------------------------------------------------------

使用 rolling_apply 的 Python 自定义函数用于 pandas

我想使用pandas.rolling_apply函数在滚动窗口的基础上应用我自己的自定义函数。但是我的函数需要两个参数,并且还有两个输出。这可能吗?下面是一个最小的可重现示例...importpandasaspdimportnumpyasnpimportrandomtmp=pd.DataFrame(np.random.randn(2000,2)/10000,index=pd.date_range('2001-01-01',periods=2000),columns=['A','B'])defgm(df,p):v=(((df+1).cumprod())-1)*preturnv.iloc[

python - 返回 pandas 数据框中特定值的列名

我在其他语言(例如R或SQL)中找到了此选项,但我不太确定如何在Pandas中执行此操作。所以我有一个包含1262列和1行的文件,每次出现特定值时都需要返回列标题。例如这个测试数据框:Datecol1col2col3col4col5col6col701/01/201600:0037.0436.5735.7737.5636.7935.9038.15我需要找到列名称,例如其中值=38.15。这样做的最佳方式是什么?谢谢 最佳答案 既然你只有一行,那么你可以对结果调用iloc[0]并使用它来屏蔽列:In[47]:df.columns[(d

python - Pandas 滚动应用自定义

我一直在关注类似的答案here,但是我在使用sklearn和rollingapply时有一些问题。我正在尝试创建z-scores并通过滚动应用进行PCA,但我一直收到'onlylength-1arrayscanbeconvertedtoPythonscalars'错误。按照前面的示例,我创建了一个数据框fromsklearn.preprocessingimportStandardScalerimportpandasaspdimportnumpyasnpsc=StandardScaler()tmp=pd.DataFrame(np.random.randn(2000,2)/10000,in

python - 在 json 中存储 pandas 数据框时保持列和行顺序

当使用to_json将数据存储在json对象中,并使用read_json读回时,返回的行和列按字母顺序排序。有没有办法让结果保持有序或在检索时重新排序? 最佳答案 您可以使用orient='split',它将索引和列信息存储在列表中,列表保持顺序:In[34]:dfOut[34]:ACB501243453678In[35]:df.to_json(orient='split')Out[35]:'{"columns":["A","C","B"],"index":[5,4,3],"data":[[0,1,2],[3,4,5],[6,7,8

python - 将 SKLearn 癌症数据集加载到 Pandas DataFrame 中

我正在尝试根据键(target_names、target和DESCR)加载sklearn.dataset,但缺少一列。我尝试了各种方法来包含最后一列,但有错误。importnumpyasnpimportpandasaspdfromsklearn.datasetsimportload_breast_cancercancer=load_breast_cancer()printcancer.keys()thekeysare['target_names','data','target','DESCR','feature_names']data=pd.DataFrame(cancer.data,

python - 通过字典有效地替换 Pandas 系列中的值

如何通过字典d替换Pandas系列s中的值已被多次询问和重新询问。推荐的方法(1、2、3、4)要么使用s.replace(d),要么偶尔使用。map(d)如果您的所有系列值都在字典键中找到。但是,使用s.replace的性能通常非常慢,通常比简单的列表理解慢5-10倍。备选方案s.map(d)具有良好的性能,但仅在字典中找到所有键时才推荐使用。为什么s.replace这么慢,如何提高性能?importpandasaspd,numpyasnpdf=pd.DataFrame({'A':np.random.randint(0,1000,1000000)})lst=df['A'].values

python - 在多级索引的一个级别上过滤 Pandas 数据框

如果我有一个带有多级索引的pandas数据框,我该如何按该索引的其中一个级别进行过滤。例如:df=pd.DataFrame({"id":[1,2,1,2],"time":[1,1,2,2],"val":[1,2,3,4]})df.set_index(keys=["id","time"],inplace=True)我想做这样的事情:df[df["time"]>1]但是time不再是一列。我可以将其保留为一列,但我不想拖拽数据副本。 最佳答案 In[17]:df[df.index.get_level_values('time')>1]O

python - 删除列值类型为字符串 Pandas 的行

我有一个Pandas数据框。我的专栏之一应该只是花车。当我尝试将该列转换为float时,系统提醒我其中有字符串。我想删除此列中的值为字符串的所有行... 最佳答案 将convert_objects与参数convert_numeric=True结合使用,这会将任何非数值强制转换为NaN:In[24]:df=pd.DataFrame({'a':[0.1,0.5,'jasdh',9.0]})dfOut[24]:a00.110.52jasdh39In[27]:df.convert_objects(convert_numeric=True)O