小编ge0*_*rge的帖子

HTTP错误403:读取HTML时禁止访问

我想阅读以下html,

 import pandas as pd

daily_info=pd.read_html('https://www.investing.com/earnings-calendar/',flavor='html5lib')

print(daily_info)
Run Code Online (Sandbox Code Playgroud)

不幸的是出现了:

urllib.error.HTTPError: HTTP Error 403: Forbidden
Run Code Online (Sandbox Code Playgroud)

无论如何要解决它吗?

python pandas

7
推荐指数
1
解决办法
4149
查看次数

为什么我不能重命名列?

我有以下df:

          TAN.SK    SHA.LO
A         0.05      0.01   
S         0.04      0.44
D         0.08     -0.18
Run Code Online (Sandbox Code Playgroud)

我希望新的df如下:

          TAN        SHA
A         0.05      0.01   
S         0.04      0.44
D         0.08     -0.18
Run Code Online (Sandbox Code Playgroud)

基本上从列名中删除.SK.LO

这是我尝试过的:

df.rename(columns=lambda x: x.split('.')[0])

df.columns=df.split('.')[0]
Run Code Online (Sandbox Code Playgroud)

第二种情况适用于 df.index

python pandas

6
推荐指数
1
解决办法
1671
查看次数

将列名转换为第一行

我想将以下数据帧转换为 json 。

df:
                               A   sector    B     sector    C     sector                              
TTM Ratio                      --   35.99   12.70  20.63  14.75      23.06
RRM Sales                      --  114.57    1.51   5.02   1.00    4594.13
MQR book                     1.48    2.64    1.02   2.46   2.73       2.74
TTR cash                       --   14.33    7.41  15.35   8.59  513854.86
Run Code Online (Sandbox Code Playgroud)

为了通过使用该函数来做到这一点,df.to_json()我需要在列和索引中有唯一的名称。

因此,我正在寻找的是将列名转换为一行并具有默认列号。简而言之,我想要以下输出:

df:
                               0     1       2       3       4       5 
                               A   sector    B     sector    C     sector                              
TTM Ratio                      --   35.99   12.70  20.63  14.75      23.06
RRM Sales                      --  114.57    1.51   5.02   1.00    4594.13
MQR book                     1.48    2.64    1.02 …
Run Code Online (Sandbox Code Playgroud)

pandas

4
推荐指数
2
解决办法
3185
查看次数

更改数据帧索引中的日期格式时出错

我有以下 df :

                  A         B
2018-01-02  100.000000  100.000000
2018-01-03  100.808036  100.325886
2018-01-04  101.616560  102.307700
Run Code Online (Sandbox Code Playgroud)

我期待更改索引的时间格式,所以我尝试了(在链接Format pandas dataframe index date 中使用 @jezrael 的响应):

df.index = rdo.index.strftime('%d-%m-%Y')
Run Code Online (Sandbox Code Playgroud)

但它输出:

AttributeError: 'Index' object has no attribute 'strftime'
Run Code Online (Sandbox Code Playgroud)

我想要的输出是:

                 A         B
02-01-2018  100.000000  100.000000
03-01-2018  100.808036  100.325886
04-01-2018  101.616560  102.307700
Run Code Online (Sandbox Code Playgroud)

我发现上面链接中提出的问题与我的问题非常相似。我真的不明白为什么会出现 attrError 。

pandas

4
推荐指数
1
解决办法
3160
查看次数

尝试使用re.sub和split方法拆分字符串

我有以下str:

str='hola.mami.gusto'
Run Code Online (Sandbox Code Playgroud)

我期待删除所有子字符串(包括最后一个')。

我尝试了一个简单的

str.split('.',1)
Run Code Online (Sandbox Code Playgroud)

但是它分开了:

['hola', 'mami.gusto']
Run Code Online (Sandbox Code Playgroud)

而不是我想要的输出:

['hola.mami', 'gusto']
Run Code Online (Sandbox Code Playgroud)

然后我尝试了一个正则表达式:

answer= re.sub("\.", "", str,-1)
Run Code Online (Sandbox Code Playgroud)

认为这将取代最后一个'之后的所有内容。通过“”。

但是什么都没有改变

python

4
推荐指数
1
解决办法
32
查看次数

努力理解fbprophet库中交叉验证函数的参数

基本上我有 780 个(每天)观察,我想从中训练 80% 的数据,剩下的 20% 用于交叉验证。因此我明白我将使用:

df_cv = cross_validation(m, initial='624 days', horizon='156 days')
Run Code Online (Sandbox Code Playgroud)

其中初始日期对应于我想训练和观察我想用于交叉验证的剩余观察值的第一个观察值。

我想我没有正确应用它,因为它似乎是一个截止日期,我真的不明白这是为了什么。

我怎样才能实现我的目标,即使用最初的 80% 的观察来训练数据,最后 20% 进行交叉验证?

先感谢您

machine-learning prediction python-3.x cross-validation facebook-prophet

4
推荐指数
1
解决办法
1145
查看次数

在数据框中按日期索引过滤行

我期待按日期过滤以下df,期待在索引值中仅按星期三过滤:

begin=2015-05-14
end=2015-05-22

Date
2015-05-14   81.370003  6.11282  39.753  44.950001
2015-05-15   80.419998  6.03380  39.289  44.750000
2015-05-18   80.879997  6.00746  41.249  44.360001
2015-05-19   80.629997  6.10465  41.047  40.980000
2015-05-20   80.550003  6.14370  41.636  42.790001
2015-05-21   80.480003  6.16096  42.137  43.680000
2015-05-22   80.540001  6.13916  42.179  43.490002
Run Code Online (Sandbox Code Playgroud)

并继续..

这是我尝试过的:

df1=df[df.index.dayofweek == 2]
Run Code Online (Sandbox Code Playgroud)

然后尝试:

df.index = pd.date_range(begin,end,freq='W')
Run Code Online (Sandbox Code Playgroud)

两种情况都没有成功

期望的输出是相同的df,只返回星期四的行.

pandas

3
推荐指数
1
解决办法
1908
查看次数

根据字典分配值

我有一个带有名称的list1:

   ["SAM","TOM","LOUIS"]
Run Code Online (Sandbox Code Playgroud)

我有一个这样的dict1(在值列表中没有重复的名称:

{"NICE": ["SAM", "MAIK", "CARL", "LAURA", "MARTH"],
 "BAD": ["LOUIS", "TOM", "KEVIN"],
 "GOOD": ["BILL", "JEN", "ALEX"]}
Run Code Online (Sandbox Code Playgroud)

我如何遍历list1,以便如果任何名称出现在dict1的任何列表中,它都会分配dict的对应键?

我期待产生以下输出:

["NICE","BAD","BAD"]
Run Code Online (Sandbox Code Playgroud)

对应于列表中显示的值的键:SAM,TOM,LOUIS。

这是我的想法:

lista=[]
for k,v in dict1:
    for values in arr1:
        if values in v:
            lista.append(v)
lista
Run Code Online (Sandbox Code Playgroud)

但是不确定如何迭代不同的对象v,如何有效地获取所需的输出?

python dictionary

3
推荐指数
1
解决办法
38
查看次数

根据列表中的值获取字典的键

我有一个值列表:

['A','B','C','D']
Run Code Online (Sandbox Code Playgroud)

我有一个命令

{1: ['A','F'],2:['B','J'],3:['C','N'],4:['D','X']}
Run Code Online (Sandbox Code Playgroud)

我想获取列表中每个值的键:

我试过了 :

[dict1[x] for x in list]
Run Code Online (Sandbox Code Playgroud)

但是输出错误是因为我没有考虑dict值是一个列表而不是单个值的事实。我怎样才能做到这一点?

我想要的输出将是带有list1值键的列表:

[1,2,3,4]
Run Code Online (Sandbox Code Playgroud)

python dictionary list

3
推荐指数
1
解决办法
31
查看次数

删除字符索引数据框

我有以下 df:

\n\n
total:\n\n                                    A       B           C         D\n2   Quarter Endingds9\xc3\xb1s           31   25476.20   26321.00   24867.00\n3   Quarter Ending dsa)d           31   26627.20   27904.00   25983.00\n4      Year EndingdjAsd           34  106806.00  110738.00  103731.00\n5      Year Ending (ka\xc3\xb1s           33  123813.00  131232.00  119091.00\n
Run Code Online (Sandbox Code Playgroud)\n\n

如何删除最后 5 个字符以获得:

\n\n
total:\n                             A       B           C         D\n2   Quarter Ending           31   25476.20   26321.00   24867.00\n3   Quarter Ending           31   26627.20   27904.00   25983.00\n4      Year Ending           34  106806.00  110738.00  103731.00\n5      Year Ending           33  123813.00  131232.00  119091.00\n
Run Code Online (Sandbox Code Playgroud)\n\n

我真的不知道如何清理索引并删除最后 5 个字符。

\n

python pandas

2
推荐指数
1
解决办法
2539
查看次数