akshare 1.12.99__py3-none-any.whl → 1.15.73__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of akshare might be problematic. Click here for more details.
- akshare/__init__.py +442 -138
- akshare/air/air_hebei.py +79 -53
- akshare/air/air_zhenqi.py +29 -43
- akshare/air/sunrise_tad.py +32 -17
- akshare/bank/bank_cbirc_2020.py +12 -9
- akshare/bond/bond_cb_ths.py +17 -9
- akshare/bond/bond_china.py +38 -39
- akshare/bond/bond_china_money.py +75 -48
- akshare/bond/bond_info_cm.py +28 -8
- akshare/bond/bond_issue_cninfo.py +73 -30
- akshare/bond/bond_zh_cov.py +1 -1
- akshare/bond/bond_zh_sina.py +57 -51
- akshare/cal/__init__.py +0 -0
- akshare/cal/rv.py +170 -0
- akshare/cost/cost_living.py +7 -5
- akshare/currency/currency_safe.py +7 -6
- akshare/data/cninfo.js +15 -0
- akshare/datasets.py +10 -21
- akshare/economic/macro_bank.py +95 -653
- akshare/economic/macro_china.py +772 -1024
- akshare/economic/macro_china_hk.py +65 -243
- akshare/economic/macro_china_nbs.py +24 -7
- akshare/economic/macro_constitute.py +17 -12
- akshare/economic/macro_euro.py +13 -6
- akshare/economic/macro_finance_ths.py +133 -0
- akshare/economic/macro_info_ws.py +100 -0
- akshare/economic/macro_japan.py +5 -4
- akshare/economic/macro_other.py +12 -9
- akshare/economic/macro_usa.py +376 -1940
- akshare/economic/marco_cnbs.py +11 -6
- akshare/energy/energy_carbon.py +94 -125
- akshare/event/migration.py +3 -2
- akshare/exceptions.py +43 -0
- akshare/file_fold/calendar.json +245 -2
- akshare/fortune/fortune_500.py +15 -48
- akshare/fund/fund_amac.py +157 -75
- akshare/fund/fund_em.py +191 -184
- akshare/fund/fund_etf_em.py +16 -15
- akshare/fund/fund_etf_sina.py +71 -23
- akshare/fund/fund_etf_ths.py +93 -0
- akshare/fund/fund_fee_em.py +98 -0
- akshare/fund/fund_portfolio_em.py +60 -50
- akshare/fund/fund_rank_em.py +91 -82
- akshare/fund/fund_report_cninfo.py +63 -48
- akshare/fund/fund_scale_sina.py +20 -10
- akshare/fund/fund_xq.py +139 -109
- akshare/futures/cons.py +8 -31
- akshare/futures/cot.py +185 -137
- akshare/futures/futures_basis.py +97 -32
- akshare/futures/futures_comm_ctp.py +37 -0
- akshare/futures/futures_comm_qihuo.py +74 -45
- akshare/futures/futures_daily_bar.py +121 -184
- akshare/futures/futures_hf_em.py +66 -61
- akshare/futures/futures_hq_sina.py +79 -61
- akshare/futures/futures_index_ccidx.py +6 -3
- akshare/futures/futures_inventory_99.py +61 -272
- akshare/futures/futures_news_shmet.py +4 -2
- akshare/futures/futures_roll_yield.py +12 -25
- akshare/futures/futures_spot_stock_em.py +19 -13
- akshare/futures/futures_stock_js.py +14 -12
- akshare/futures/futures_to_spot.py +38 -33
- akshare/futures/futures_warehouse_receipt.py +75 -71
- akshare/futures/futures_zh_sina.py +5 -5
- akshare/futures/symbol_var.py +18 -13
- akshare/futures_derivative/futures_contract_info_czce.py +60 -52
- akshare/futures_derivative/futures_contract_info_ine.py +43 -34
- akshare/futures_derivative/futures_contract_info_shfe.py +46 -35
- akshare/futures_derivative/futures_cot_sina.py +26 -19
- akshare/futures_derivative/futures_spot_sys.py +21 -8
- akshare/fx/currency_investing.py +19 -285
- akshare/index/index_cflp.py +29 -26
- akshare/index/index_cni.py +86 -88
- akshare/index/index_cons.py +26 -10
- akshare/index/index_cx.py +248 -47
- akshare/index/index_drewry.py +17 -16
- akshare/index/index_option_qvix.py +329 -0
- akshare/index/index_research_fund_sw.py +134 -0
- akshare/index/{index_sw_research.py → index_research_sw.py} +122 -58
- akshare/index/index_spot.py +9 -5
- akshare/index/index_stock_hk.py +35 -16
- akshare/index/index_stock_us_sina.py +1 -1
- akshare/index/index_stock_zh.py +180 -89
- akshare/index/index_stock_zh_csindex.py +15 -369
- akshare/index/index_sw.py +62 -34
- akshare/index/index_yw.py +46 -23
- akshare/index/index_zh_a_scope.py +48 -0
- akshare/index/index_zh_em.py +6 -4
- akshare/interest_rate/interbank_rate_em.py +14 -9
- akshare/movie/artist_yien.py +32 -5
- akshare/movie/movie_yien.py +92 -18
- akshare/movie/video_yien.py +28 -5
- akshare/news/news_baidu.py +78 -44
- akshare/news/news_cctv.py +38 -38
- akshare/news/news_stock.py +6 -3
- akshare/nlp/nlp_interface.py +7 -8
- akshare/option/cons.py +11 -11
- akshare/option/option_comm_qihuo.py +86 -0
- akshare/option/option_commodity.py +178 -51
- akshare/option/option_daily_stats_sse_szse.py +146 -0
- akshare/option/option_em.py +147 -138
- akshare/option/option_finance_sina.py +160 -137
- akshare/option/option_lhb_em.py +62 -56
- akshare/option/option_risk_indicator_sse.py +17 -14
- akshare/other/other_car_cpca.py +934 -0
- akshare/other/{other_car.py → other_car_gasgoo.py} +15 -54
- akshare/qdii/__init__.py +0 -0
- akshare/qdii/qdii_jsl.py +233 -0
- akshare/request.py +117 -0
- akshare/spot/spot_hog_soozhu.py +232 -0
- akshare/spot/spot_price_qh.py +121 -0
- akshare/spot/spot_sge.py +63 -10
- akshare/stock/stock_allotment_cninfo.py +10 -9
- akshare/stock/stock_board_concept_em.py +23 -14
- akshare/stock/stock_board_industry_em.py +40 -34
- akshare/stock/stock_cg_equity_mortgage.py +15 -11
- akshare/stock/stock_cg_guarantee.py +41 -51
- akshare/stock/stock_cg_lawsuit.py +36 -35
- akshare/stock/stock_dividend_cninfo.py +12 -6
- akshare/stock/stock_dzjy_em.py +347 -260
- akshare/stock/stock_fund_em.py +332 -84
- akshare/stock/stock_hk_famous.py +108 -0
- akshare/stock/stock_hk_sina.py +8 -7
- akshare/stock/stock_hold_control_cninfo.py +100 -15
- akshare/stock/stock_hold_control_em.py +4 -3
- akshare/stock/stock_hold_num_cninfo.py +18 -12
- akshare/stock/stock_hot_rank_em.py +2 -1
- akshare/stock/stock_hot_search_baidu.py +5 -2
- akshare/stock/stock_industry_cninfo.py +24 -18
- akshare/stock/stock_industry_pe_cninfo.py +45 -31
- akshare/stock/stock_industry_sw.py +9 -10
- akshare/stock/stock_info.py +25 -15
- akshare/stock/stock_info_em.py +5 -2
- akshare/stock/stock_intraday_em.py +5 -2
- akshare/stock/stock_intraday_sina.py +22 -18
- akshare/stock/stock_ipo_summary_cninfo.py +25 -10
- akshare/stock/stock_new_cninfo.py +32 -19
- akshare/stock/stock_news_cx.py +39 -0
- akshare/stock/stock_profile_cninfo.py +9 -8
- akshare/stock/stock_rank_forecast.py +8 -6
- akshare/stock/stock_share_changes_cninfo.py +18 -14
- akshare/stock/stock_share_hold.py +24 -19
- akshare/stock/stock_summary.py +54 -26
- akshare/stock/stock_us_famous.py +15 -6
- akshare/stock/stock_us_pink.py +7 -5
- akshare/stock/stock_us_sina.py +15 -12
- akshare/stock/stock_xq.py +38 -12
- akshare/stock/stock_zh_a_sina.py +53 -78
- akshare/stock/stock_zh_b_sina.py +32 -55
- akshare/stock/stock_zh_kcb_report.py +11 -9
- akshare/stock/stock_zh_kcb_sina.py +67 -64
- akshare/stock_feature/stock_a_below_net_asset_statistics.py +5 -2
- akshare/stock_feature/stock_a_high_low.py +5 -2
- akshare/stock_feature/stock_a_indicator.py +12 -9
- akshare/stock_feature/stock_a_pe_and_pb.py +27 -6
- akshare/stock_feature/stock_account_em.py +58 -40
- akshare/stock_feature/stock_analyst_em.py +36 -27
- akshare/stock_feature/stock_board_industry_ths.py +136 -400
- akshare/stock_feature/stock_comment_em.py +118 -85
- akshare/stock_feature/stock_concept_futu.py +183 -0
- akshare/stock_feature/stock_cyq_em.py +58 -54
- akshare/stock_feature/stock_disclosure_cninfo.py +147 -102
- akshare/stock_feature/stock_esg_sina.py +216 -11
- akshare/stock_feature/stock_fhps_em.py +60 -25
- akshare/stock_feature/stock_fhps_ths.py +25 -6
- akshare/stock_feature/stock_fund_flow.py +38 -25
- akshare/stock_feature/stock_gdfx_em.py +180 -95
- akshare/stock_feature/stock_gdhs.py +73 -49
- akshare/stock_feature/stock_gpzy_em.py +78 -46
- akshare/stock_feature/stock_hist_em.py +55 -23
- akshare/stock_feature/stock_hk_valuation_baidu.py +20 -8
- akshare/stock_feature/stock_hsgt_em.py +184 -452
- akshare/stock_feature/stock_info.py +52 -29
- akshare/stock_feature/stock_inner_trade_xq.py +39 -31
- akshare/stock_feature/stock_irm_cninfo.py +32 -9
- akshare/stock_feature/stock_jgdy_em.py +41 -38
- akshare/stock_feature/stock_lh_yybpm.py +36 -37
- akshare/stock_feature/stock_lhb_em.py +135 -71
- akshare/stock_feature/stock_lhb_sina.py +93 -46
- akshare/stock_feature/stock_margin_em.py +102 -0
- akshare/stock_feature/{stock_sse_margin.py → stock_margin_sse.py} +21 -15
- akshare/stock_feature/{stock_szse_margin.py → stock_margin_szse.py} +23 -19
- akshare/stock_feature/stock_market_legu.py +13 -8
- akshare/stock_feature/stock_pankou_em.py +72 -34
- akshare/stock_feature/stock_report_em.py +244 -54
- akshare/stock_feature/stock_research_report_em.py +48 -19
- akshare/stock_feature/stock_sns_sseinfo.py +15 -12
- akshare/stock_feature/stock_sy_em.py +86 -33
- akshare/stock_feature/stock_technology_ths.py +152 -120
- akshare/stock_feature/stock_tfp_em.py +35 -13
- akshare/stock_feature/stock_three_report_em.py +119 -77
- akshare/stock_feature/stock_ttm_lyr.py +4 -7
- akshare/stock_feature/stock_value_em.py +83 -0
- akshare/stock_feature/stock_wencai.py +21 -9
- akshare/stock_feature/stock_yjyg_em.py +63 -28
- akshare/stock_feature/stock_zf_pg.py +61 -38
- akshare/stock_feature/stock_zh_valuation_baidu.py +3 -2
- akshare/stock_feature/stock_ztb_em.py +62 -40
- akshare/stock_fundamental/stock_finance.py +150 -58
- akshare/stock_fundamental/stock_finance_ths.py +116 -31
- akshare/stock_fundamental/stock_mda_ym.py +5 -3
- akshare/stock_fundamental/stock_notice.py +29 -15
- akshare/stock_fundamental/stock_profit_forecast_em.py +31 -13
- akshare/stock_fundamental/stock_profit_forecast_ths.py +19 -10
- akshare/stock_fundamental/stock_register_em.py +448 -0
- akshare/stock_fundamental/stock_restricted_em.py +79 -32
- akshare/stock_fundamental/stock_zygc.py +10 -8
- akshare/stock_fundamental/stock_zyjs_ths.py +5 -3
- akshare/tool/trade_date_hist.py +4 -3
- akshare/utils/cons.py +10 -0
- akshare/utils/context.py +43 -0
- akshare/utils/demjson.py +2 -2
- akshare/utils/func.py +26 -0
- akshare/utils/tqdm.py +13 -3
- {akshare-1.12.99.dist-info → akshare-1.15.73.dist-info}/METADATA +52 -69
- akshare-1.15.73.dist-info/RECORD +385 -0
- {akshare-1.12.99.dist-info → akshare-1.15.73.dist-info}/WHEEL +1 -1
- tests/test_func.py +3 -5
- akshare/bond/bond_futures.py +0 -50
- akshare/bond/bond_investing.py +0 -139
- akshare/crypto/crypto_hist_investing.py +0 -249
- akshare/fortune/fortune_it_juzi.py +0 -123
- akshare/futures/futures_international.py +0 -170
- akshare/futures/futures_news_baidu.py +0 -54
- akshare/futures/inventory_data.py +0 -100
- akshare/futures_derivative/futures_index_price_nh.py +0 -61
- akshare/futures_derivative/futures_index_return_nh.py +0 -47
- akshare/futures_derivative/futures_index_volatility_nh.py +0 -51
- akshare/futures_derivative/futures_other_index_nh.py +0 -145
- akshare/index/index_fear_greed_funddb.py +0 -71
- akshare/index/index_investing.py +0 -232
- akshare/sport/sport_olympic_winter.py +0 -39
- akshare/stock_feature/stock_board_concept_ths.py +0 -422
- akshare/stock_fundamental/stock_register.py +0 -292
- akshare-1.12.99.dist-info/RECORD +0 -374
- {akshare-1.12.99.dist-info → akshare-1.15.73.dist-info}/LICENSE +0 -0
- {akshare-1.12.99.dist-info → akshare-1.15.73.dist-info}/top_level.txt +0 -0
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
#!/usr/bin/env python
|
|
2
2
|
# -*- coding:utf-8 -*-
|
|
3
3
|
"""
|
|
4
|
-
Date: 2024/
|
|
4
|
+
Date: 2024/6/7 20:00
|
|
5
5
|
Desc: 天天基金网-基金档案-投资组合
|
|
6
6
|
https://fundf10.eastmoney.com/ccmx_000001.html
|
|
7
7
|
"""
|
|
8
|
+
|
|
8
9
|
from io import StringIO
|
|
9
10
|
|
|
10
11
|
import pandas as pd
|
|
@@ -14,9 +15,7 @@ from bs4 import BeautifulSoup
|
|
|
14
15
|
from akshare.utils import demjson
|
|
15
16
|
|
|
16
17
|
|
|
17
|
-
def fund_portfolio_hold_em(
|
|
18
|
-
symbol: str = "000001", date: str = "2023"
|
|
19
|
-
) -> pd.DataFrame:
|
|
18
|
+
def fund_portfolio_hold_em(symbol: str = "000001", date: str = "2024") -> pd.DataFrame:
|
|
20
19
|
"""
|
|
21
20
|
天天基金网-基金档案-投资组合-基金持仓
|
|
22
21
|
https://fundf10.eastmoney.com/ccmx_000001.html
|
|
@@ -27,7 +26,7 @@ def fund_portfolio_hold_em(
|
|
|
27
26
|
:return: 基金持仓
|
|
28
27
|
:rtype: pandas.DataFrame
|
|
29
28
|
"""
|
|
30
|
-
url = "
|
|
29
|
+
url = "https://fundf10.eastmoney.com/FundArchivesDatas.aspx"
|
|
31
30
|
params = {
|
|
32
31
|
"type": "jjcc",
|
|
33
32
|
"code": symbol,
|
|
@@ -38,35 +37,40 @@ def fund_portfolio_hold_em(
|
|
|
38
37
|
}
|
|
39
38
|
r = requests.get(url, params=params)
|
|
40
39
|
data_text = r.text
|
|
41
|
-
data_json = demjson.decode(data_text[data_text.find("{"): -1])
|
|
42
|
-
soup = BeautifulSoup(data_json["content"], "lxml")
|
|
40
|
+
data_json = demjson.decode(data_text[data_text.find("{") : -1])
|
|
41
|
+
soup = BeautifulSoup(data_json["content"], features="lxml")
|
|
43
42
|
item_label = [
|
|
44
43
|
item.text.split("\xa0\xa0")[1]
|
|
45
|
-
for item in soup.find_all("h4", attrs={"class": "t"})
|
|
44
|
+
for item in soup.find_all(name="h4", attrs={"class": "t"})
|
|
46
45
|
]
|
|
47
46
|
big_df = pd.DataFrame()
|
|
48
47
|
for item in range(len(item_label)):
|
|
49
|
-
temp_df = pd.read_html(
|
|
50
|
-
|
|
51
|
-
]
|
|
48
|
+
temp_df = pd.read_html(
|
|
49
|
+
StringIO(data_json["content"]), converters={"股票代码": str}
|
|
50
|
+
)[item]
|
|
52
51
|
del temp_df["相关资讯"]
|
|
53
|
-
temp_df.rename(
|
|
54
|
-
columns={"占净值 比例": "占净值比例"}, inplace=True
|
|
55
|
-
)
|
|
52
|
+
temp_df.rename(columns={"占净值 比例": "占净值比例"}, inplace=True)
|
|
56
53
|
temp_df["占净值比例"] = (
|
|
57
54
|
temp_df["占净值比例"].str.split("%", expand=True).iloc[:, 0]
|
|
58
55
|
)
|
|
59
56
|
temp_df.rename(
|
|
60
|
-
columns={"持股数(万股)": "持股数", "持仓市值(万元)": "持仓市值"},
|
|
57
|
+
columns={"持股数(万股)": "持股数", "持仓市值(万元)": "持仓市值"},
|
|
58
|
+
inplace=True,
|
|
61
59
|
)
|
|
62
60
|
temp_df.rename(
|
|
63
|
-
columns={"持股数 (万股)": "持股数", "持仓市值 (万元)": "持仓市值"},
|
|
61
|
+
columns={"持股数 (万股)": "持股数", "持仓市值 (万元)": "持仓市值"},
|
|
62
|
+
inplace=True,
|
|
64
63
|
)
|
|
65
64
|
temp_df.rename(
|
|
66
|
-
columns={"持股数(万股)": "持股数", "持仓市值(万元人民币)": "持仓市值"},
|
|
65
|
+
columns={"持股数(万股)": "持股数", "持仓市值(万元人民币)": "持仓市值"},
|
|
66
|
+
inplace=True,
|
|
67
67
|
)
|
|
68
68
|
temp_df.rename(
|
|
69
|
-
columns={
|
|
69
|
+
columns={
|
|
70
|
+
"持股数 (万股)": "持股数",
|
|
71
|
+
"持仓市值 (万元人民币)": "持仓市值",
|
|
72
|
+
},
|
|
73
|
+
inplace=True,
|
|
70
74
|
)
|
|
71
75
|
|
|
72
76
|
temp_df["季度"] = item_label[item]
|
|
@@ -81,16 +85,19 @@ def fund_portfolio_hold_em(
|
|
|
81
85
|
"季度",
|
|
82
86
|
]
|
|
83
87
|
]
|
|
84
|
-
big_df = pd.concat([
|
|
88
|
+
big_df = pd.concat(objs=[temp_df, big_df], ignore_index=True)
|
|
85
89
|
big_df["占净值比例"] = pd.to_numeric(big_df["占净值比例"], errors="coerce")
|
|
86
90
|
big_df["持股数"] = pd.to_numeric(big_df["持股数"], errors="coerce")
|
|
87
91
|
big_df["持仓市值"] = pd.to_numeric(big_df["持仓市值"], errors="coerce")
|
|
88
|
-
big_df["序号"]
|
|
92
|
+
del big_df["序号"]
|
|
93
|
+
big_df.reset_index(inplace=True, drop=False)
|
|
94
|
+
big_df["index"] = big_df["index"] + 1
|
|
95
|
+
big_df.rename(columns={"index": "序号"}, inplace=True)
|
|
89
96
|
return big_df
|
|
90
97
|
|
|
91
98
|
|
|
92
99
|
def fund_portfolio_bond_hold_em(
|
|
93
|
-
|
|
100
|
+
symbol: str = "000001", date: str = "2023"
|
|
94
101
|
) -> pd.DataFrame:
|
|
95
102
|
"""
|
|
96
103
|
天天基金网-基金档案-投资组合-债券持仓
|
|
@@ -102,7 +109,7 @@ def fund_portfolio_bond_hold_em(
|
|
|
102
109
|
:return: 债券持仓
|
|
103
110
|
:rtype: pandas.DataFrame
|
|
104
111
|
"""
|
|
105
|
-
url = "
|
|
112
|
+
url = "https://fundf10.eastmoney.com/FundArchivesDatas.aspx"
|
|
106
113
|
params = {
|
|
107
114
|
"type": "zqcc",
|
|
108
115
|
"code": symbol,
|
|
@@ -111,17 +118,17 @@ def fund_portfolio_bond_hold_em(
|
|
|
111
118
|
}
|
|
112
119
|
r = requests.get(url, params=params)
|
|
113
120
|
data_text = r.text
|
|
114
|
-
data_json = demjson.decode(data_text[data_text.find("{"): -1])
|
|
115
|
-
soup = BeautifulSoup(data_json["content"], "lxml")
|
|
121
|
+
data_json = demjson.decode(data_text[data_text.find("{") : -1])
|
|
122
|
+
soup = BeautifulSoup(data_json["content"], features="lxml")
|
|
116
123
|
item_label = [
|
|
117
124
|
item.text.split("\xa0\xa0")[1]
|
|
118
|
-
for item in soup.find_all("h4", attrs={"class": "t"})
|
|
125
|
+
for item in soup.find_all(name="h4", attrs={"class": "t"})
|
|
119
126
|
]
|
|
120
127
|
big_df = pd.DataFrame()
|
|
121
128
|
for item in range(len(item_label)):
|
|
122
|
-
temp_df = pd.read_html(
|
|
123
|
-
|
|
124
|
-
]
|
|
129
|
+
temp_df = pd.read_html(
|
|
130
|
+
StringIO(data_json["content"]), converters={"债券代码": str}
|
|
131
|
+
)[item]
|
|
125
132
|
temp_df["占净值比例"] = (
|
|
126
133
|
temp_df["占净值比例"].str.split("%", expand=True).iloc[:, 0]
|
|
127
134
|
)
|
|
@@ -137,7 +144,7 @@ def fund_portfolio_bond_hold_em(
|
|
|
137
144
|
"季度",
|
|
138
145
|
]
|
|
139
146
|
]
|
|
140
|
-
big_df = pd.concat([big_df, temp_df], ignore_index=True)
|
|
147
|
+
big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
|
|
141
148
|
big_df["占净值比例"] = pd.to_numeric(big_df["占净值比例"], errors="coerce")
|
|
142
149
|
big_df["持仓市值"] = pd.to_numeric(big_df["持仓市值"], errors="coerce")
|
|
143
150
|
big_df["序号"] = range(1, len(big_df) + 1)
|
|
@@ -145,7 +152,7 @@ def fund_portfolio_bond_hold_em(
|
|
|
145
152
|
|
|
146
153
|
|
|
147
154
|
def fund_portfolio_industry_allocation_em(
|
|
148
|
-
|
|
155
|
+
symbol: str = "000001", date: str = "2023"
|
|
149
156
|
) -> pd.DataFrame:
|
|
150
157
|
"""
|
|
151
158
|
天天基金网-基金档案-投资组合-行业配置
|
|
@@ -157,7 +164,7 @@ def fund_portfolio_industry_allocation_em(
|
|
|
157
164
|
:return: 行业配置
|
|
158
165
|
:rtype: pandas.DataFrame
|
|
159
166
|
"""
|
|
160
|
-
url = "
|
|
167
|
+
url = "https://api.fund.eastmoney.com/f10/HYPZ/"
|
|
161
168
|
headers = {
|
|
162
169
|
"Accept": "*/*",
|
|
163
170
|
"Accept-Encoding": "gzip, deflate",
|
|
@@ -166,8 +173,9 @@ def fund_portfolio_industry_allocation_em(
|
|
|
166
173
|
"Connection": "keep-alive",
|
|
167
174
|
"Host": "api.fund.eastmoney.com",
|
|
168
175
|
"Pragma": "no-cache",
|
|
169
|
-
"Referer": "
|
|
170
|
-
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)
|
|
176
|
+
"Referer": "https://fundf10.eastmoney.com/",
|
|
177
|
+
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
|
|
178
|
+
"Chrome/99.0.4844.82 Safari/537.36",
|
|
171
179
|
}
|
|
172
180
|
params = {
|
|
173
181
|
"fundCode": symbol,
|
|
@@ -177,7 +185,7 @@ def fund_portfolio_industry_allocation_em(
|
|
|
177
185
|
}
|
|
178
186
|
r = requests.get(url, params=params, headers=headers)
|
|
179
187
|
data_text = r.text
|
|
180
|
-
data_json = demjson.decode(data_text[data_text.find("{"): -1])
|
|
188
|
+
data_json = demjson.decode(data_text[data_text.find("{") : -1])
|
|
181
189
|
temp_list = []
|
|
182
190
|
for item in data_json["Data"]["QuarterInfos"]:
|
|
183
191
|
temp_list.extend(item["HYPZInfo"])
|
|
@@ -218,7 +226,7 @@ def fund_portfolio_industry_allocation_em(
|
|
|
218
226
|
|
|
219
227
|
|
|
220
228
|
def fund_portfolio_change_em(
|
|
221
|
-
|
|
229
|
+
symbol: str = "003567", indicator: str = "累计买入", date: str = "2023"
|
|
222
230
|
) -> pd.DataFrame:
|
|
223
231
|
"""
|
|
224
232
|
天天基金网-基金档案-投资组合-重大变动
|
|
@@ -236,7 +244,7 @@ def fund_portfolio_change_em(
|
|
|
236
244
|
"累计买入": "1",
|
|
237
245
|
"累计卖出": "2",
|
|
238
246
|
}
|
|
239
|
-
url = "
|
|
247
|
+
url = "https://fundf10.eastmoney.com/FundArchivesDatas.aspx"
|
|
240
248
|
params = {
|
|
241
249
|
"type": "zdbd",
|
|
242
250
|
"code": symbol,
|
|
@@ -246,20 +254,22 @@ def fund_portfolio_change_em(
|
|
|
246
254
|
}
|
|
247
255
|
r = requests.get(url, params=params)
|
|
248
256
|
data_text = r.text
|
|
249
|
-
data_json = demjson.decode(data_text[data_text.find("{"): -1])
|
|
250
|
-
soup = BeautifulSoup(data_json["content"], "lxml")
|
|
257
|
+
data_json = demjson.decode(data_text[data_text.find("{") : -1])
|
|
258
|
+
soup = BeautifulSoup(data_json["content"], features="lxml")
|
|
251
259
|
item_label = [
|
|
252
260
|
item.text.split("\xa0\xa0")[1]
|
|
253
|
-
for item in soup.find_all("h4", attrs={"class": "t"})
|
|
261
|
+
for item in soup.find_all(name="h4", attrs={"class": "t"})
|
|
254
262
|
]
|
|
255
263
|
big_df = pd.DataFrame()
|
|
256
264
|
for item in range(len(item_label)):
|
|
257
|
-
temp_df = pd.read_html(
|
|
258
|
-
|
|
259
|
-
]
|
|
265
|
+
temp_df = pd.read_html(
|
|
266
|
+
StringIO(data_json["content"]), converters={"股票代码": str}
|
|
267
|
+
)[item]
|
|
260
268
|
del temp_df["相关资讯"]
|
|
261
269
|
temp_df["占期初基金资产净值比例(%)"] = (
|
|
262
|
-
temp_df["占期初基金资产净值比例(%)"]
|
|
270
|
+
temp_df["占期初基金资产净值比例(%)"]
|
|
271
|
+
.str.split("%", expand=True)
|
|
272
|
+
.iloc[:, 0]
|
|
263
273
|
)
|
|
264
274
|
temp_df["季度"] = item_label[item]
|
|
265
275
|
temp_df.columns = [
|
|
@@ -280,13 +290,15 @@ def fund_portfolio_change_em(
|
|
|
280
290
|
"季度",
|
|
281
291
|
]
|
|
282
292
|
]
|
|
283
|
-
big_df = pd.concat([big_df, temp_df], ignore_index=True)
|
|
293
|
+
big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
|
|
284
294
|
del big_df["序号"]
|
|
285
295
|
big_df.reset_index(inplace=True)
|
|
286
296
|
big_df["index"] = big_df.index + 1
|
|
287
297
|
big_df.rename(columns={"index": "序号"}, inplace=True)
|
|
288
298
|
|
|
289
|
-
big_df["本期累计买入金额"] = pd.to_numeric(
|
|
299
|
+
big_df["本期累计买入金额"] = pd.to_numeric(
|
|
300
|
+
big_df["本期累计买入金额"], errors="coerce"
|
|
301
|
+
)
|
|
290
302
|
big_df["占期初基金资产净值比例"] = pd.to_numeric(
|
|
291
303
|
big_df["占期初基金资产净值比例"], errors="coerce"
|
|
292
304
|
)
|
|
@@ -294,9 +306,7 @@ def fund_portfolio_change_em(
|
|
|
294
306
|
|
|
295
307
|
|
|
296
308
|
if __name__ == "__main__":
|
|
297
|
-
fund_portfolio_hold_em_df = fund_portfolio_hold_em(
|
|
298
|
-
symbol="011934", date="2023"
|
|
299
|
-
)
|
|
309
|
+
fund_portfolio_hold_em_df = fund_portfolio_hold_em(symbol="000001", date="2024")
|
|
300
310
|
print(fund_portfolio_hold_em_df)
|
|
301
311
|
|
|
302
312
|
fund_portfolio_bond_hold_em_df = fund_portfolio_bond_hold_em(
|
|
@@ -304,8 +314,8 @@ if __name__ == "__main__":
|
|
|
304
314
|
)
|
|
305
315
|
print(fund_portfolio_bond_hold_em_df)
|
|
306
316
|
|
|
307
|
-
fund_portfolio_industry_allocation_em_df = (
|
|
308
|
-
|
|
317
|
+
fund_portfolio_industry_allocation_em_df = fund_portfolio_industry_allocation_em(
|
|
318
|
+
symbol="000001", date="2023"
|
|
309
319
|
)
|
|
310
320
|
print(fund_portfolio_industry_allocation_em_df)
|
|
311
321
|
|
akshare/fund/fund_rank_em.py
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
#!/usr/bin/env python
|
|
2
2
|
# -*- coding:utf-8 -*-
|
|
3
3
|
"""
|
|
4
|
-
Date: 2024/
|
|
4
|
+
Date: 2024/7/24 13:00
|
|
5
5
|
Desc: 东方财富网-数据中心-开放基金排行
|
|
6
6
|
https://fund.eastmoney.com/data/fundranking.html
|
|
7
7
|
名词解释
|
|
8
8
|
https://help.1234567.com.cn/list_236.html
|
|
9
9
|
"""
|
|
10
|
+
|
|
10
11
|
from datetime import datetime, date
|
|
11
12
|
|
|
12
13
|
import pandas as pd
|
|
@@ -33,7 +34,7 @@ def fund_open_fund_rank_em(symbol: str = "全部") -> pd.DataFrame:
|
|
|
33
34
|
"""
|
|
34
35
|
东方财富网-数据中心-开放基金排行
|
|
35
36
|
https://fund.eastmoney.com/data/fundranking.html
|
|
36
|
-
:param symbol: choice of {"全部", "股票型", "混合型", "债券型", "指数型", "QDII", "
|
|
37
|
+
:param symbol: choice of {"全部", "股票型", "混合型", "债券型", "指数型", "QDII", "FOF"}
|
|
37
38
|
:type symbol: str
|
|
38
39
|
:return: 开放基金排行
|
|
39
40
|
:rtype: pandas.DataFrame
|
|
@@ -64,17 +65,18 @@ def fund_open_fund_rank_em(symbol: str = "全部") -> pd.DataFrame:
|
|
|
64
65
|
"qdii": "",
|
|
65
66
|
"tabSubtype": ",,,,,",
|
|
66
67
|
"pi": "1",
|
|
67
|
-
"pn": "
|
|
68
|
+
"pn": "30000",
|
|
68
69
|
"dx": "1",
|
|
69
70
|
"v": "0.1591891419018292",
|
|
70
71
|
}
|
|
71
72
|
headers = {
|
|
72
|
-
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)
|
|
73
|
+
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
|
|
74
|
+
"Chrome/81.0.4044.138 Safari/537.36",
|
|
73
75
|
"Referer": "https://fund.eastmoney.com/fundguzhi.html",
|
|
74
76
|
}
|
|
75
77
|
r = requests.get(url, params=params, headers=headers)
|
|
76
78
|
data_text = r.text
|
|
77
|
-
data_json = demjson.decode(data_text[data_text.find("{"): -1])
|
|
79
|
+
data_json = demjson.decode(data_text[data_text.find("{") : -1])
|
|
78
80
|
temp_df = pd.DataFrame(data_json["datas"])
|
|
79
81
|
temp_df = temp_df.iloc[:, 0].str.split(",", expand=True)
|
|
80
82
|
temp_df.reset_index(inplace=True)
|
|
@@ -129,20 +131,20 @@ def fund_open_fund_rank_em(symbol: str = "全部") -> pd.DataFrame:
|
|
|
129
131
|
"手续费",
|
|
130
132
|
]
|
|
131
133
|
]
|
|
132
|
-
temp_df[
|
|
133
|
-
temp_df[
|
|
134
|
-
temp_df[
|
|
135
|
-
temp_df[
|
|
136
|
-
temp_df[
|
|
137
|
-
temp_df[
|
|
138
|
-
temp_df[
|
|
139
|
-
temp_df[
|
|
140
|
-
temp_df[
|
|
141
|
-
temp_df[
|
|
142
|
-
temp_df[
|
|
143
|
-
temp_df[
|
|
144
|
-
temp_df[
|
|
145
|
-
temp_df[
|
|
134
|
+
temp_df["日期"] = pd.to_datetime(temp_df["日期"], errors="coerce").dt.date
|
|
135
|
+
temp_df["单位净值"] = pd.to_numeric(temp_df["单位净值"], errors="coerce")
|
|
136
|
+
temp_df["累计净值"] = pd.to_numeric(temp_df["累计净值"], errors="coerce")
|
|
137
|
+
temp_df["日增长率"] = pd.to_numeric(temp_df["日增长率"], errors="coerce")
|
|
138
|
+
temp_df["近1周"] = pd.to_numeric(temp_df["近1周"], errors="coerce")
|
|
139
|
+
temp_df["近1月"] = pd.to_numeric(temp_df["近1月"], errors="coerce")
|
|
140
|
+
temp_df["近3月"] = pd.to_numeric(temp_df["近3月"], errors="coerce")
|
|
141
|
+
temp_df["近6月"] = pd.to_numeric(temp_df["近6月"], errors="coerce")
|
|
142
|
+
temp_df["近1年"] = pd.to_numeric(temp_df["近1年"], errors="coerce")
|
|
143
|
+
temp_df["近2年"] = pd.to_numeric(temp_df["近2年"], errors="coerce")
|
|
144
|
+
temp_df["近3年"] = pd.to_numeric(temp_df["近3年"], errors="coerce")
|
|
145
|
+
temp_df["今年来"] = pd.to_numeric(temp_df["今年来"], errors="coerce")
|
|
146
|
+
temp_df["成立来"] = pd.to_numeric(temp_df["成立来"], errors="coerce")
|
|
147
|
+
temp_df["自定义"] = pd.to_numeric(temp_df["自定义"], errors="coerce")
|
|
146
148
|
return temp_df
|
|
147
149
|
|
|
148
150
|
|
|
@@ -163,16 +165,17 @@ def fund_exchange_rank_em() -> pd.DataFrame:
|
|
|
163
165
|
"sc": "1nzf",
|
|
164
166
|
"st": "desc",
|
|
165
167
|
"pi": "1",
|
|
166
|
-
"pn": "
|
|
168
|
+
"pn": "30000",
|
|
167
169
|
"v": "0.1591891419018292",
|
|
168
170
|
}
|
|
169
171
|
headers = {
|
|
170
|
-
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)
|
|
172
|
+
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
|
|
173
|
+
"Chrome/81.0.4044.138 Safari/537.36",
|
|
171
174
|
"Referer": "https://fund.eastmoney.com/fundguzhi.html",
|
|
172
175
|
}
|
|
173
176
|
r = requests.get(url, params=params, headers=headers)
|
|
174
177
|
text_data = r.text
|
|
175
|
-
json_data = demjson.decode(text_data[text_data.find("{"): -1])
|
|
178
|
+
json_data = demjson.decode(text_data[text_data.find("{") : -1])
|
|
176
179
|
temp_df = pd.DataFrame(json_data["datas"])
|
|
177
180
|
temp_df = temp_df.iloc[:, 0].str.split(",", expand=True)
|
|
178
181
|
temp_df.reset_index(inplace=True)
|
|
@@ -224,19 +227,19 @@ def fund_exchange_rank_em() -> pd.DataFrame:
|
|
|
224
227
|
"成立日期",
|
|
225
228
|
]
|
|
226
229
|
]
|
|
227
|
-
temp_df[
|
|
228
|
-
temp_df[
|
|
229
|
-
temp_df[
|
|
230
|
-
temp_df[
|
|
231
|
-
temp_df[
|
|
232
|
-
temp_df[
|
|
233
|
-
temp_df[
|
|
234
|
-
temp_df[
|
|
235
|
-
temp_df[
|
|
236
|
-
temp_df[
|
|
237
|
-
temp_df[
|
|
238
|
-
temp_df[
|
|
239
|
-
temp_df[
|
|
230
|
+
temp_df["日期"] = pd.to_datetime(temp_df["日期"], errors="coerce").dt.date
|
|
231
|
+
temp_df["成立日期"] = pd.to_datetime(temp_df["成立日期"]).dt.date
|
|
232
|
+
temp_df["单位净值"] = pd.to_numeric(temp_df["单位净值"], errors="coerce")
|
|
233
|
+
temp_df["累计净值"] = pd.to_numeric(temp_df["累计净值"], errors="coerce")
|
|
234
|
+
temp_df["近1周"] = pd.to_numeric(temp_df["近1周"], errors="coerce")
|
|
235
|
+
temp_df["近1月"] = pd.to_numeric(temp_df["近1月"], errors="coerce")
|
|
236
|
+
temp_df["近3月"] = pd.to_numeric(temp_df["近3月"], errors="coerce")
|
|
237
|
+
temp_df["近6月"] = pd.to_numeric(temp_df["近6月"], errors="coerce")
|
|
238
|
+
temp_df["近1年"] = pd.to_numeric(temp_df["近1年"], errors="coerce")
|
|
239
|
+
temp_df["近2年"] = pd.to_numeric(temp_df["近2年"], errors="coerce")
|
|
240
|
+
temp_df["近3年"] = pd.to_numeric(temp_df["近3年"], errors="coerce")
|
|
241
|
+
temp_df["今年来"] = pd.to_numeric(temp_df["今年来"], errors="coerce")
|
|
242
|
+
temp_df["成立来"] = pd.to_numeric(temp_df["成立来"], errors="coerce")
|
|
240
243
|
return temp_df
|
|
241
244
|
|
|
242
245
|
|
|
@@ -259,7 +262,8 @@ def fund_money_rank_em() -> pd.DataFrame:
|
|
|
259
262
|
"_": "1603867224251",
|
|
260
263
|
}
|
|
261
264
|
headers = {
|
|
262
|
-
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)
|
|
265
|
+
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
|
|
266
|
+
"Chrome/81.0.4044.138 Safari/537.36",
|
|
263
267
|
"Referer": "https://fund.eastmoney.com/fundguzhi.html",
|
|
264
268
|
}
|
|
265
269
|
r = requests.get(url, params=params, headers=headers)
|
|
@@ -319,20 +323,24 @@ def fund_money_rank_em() -> pd.DataFrame:
|
|
|
319
323
|
"手续费",
|
|
320
324
|
]
|
|
321
325
|
]
|
|
322
|
-
temp_df[
|
|
323
|
-
temp_df[
|
|
324
|
-
temp_df[
|
|
325
|
-
temp_df[
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
temp_df[
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
temp_df[
|
|
332
|
-
temp_df[
|
|
333
|
-
temp_df[
|
|
334
|
-
temp_df[
|
|
335
|
-
temp_df[
|
|
326
|
+
temp_df["日期"] = pd.to_datetime(temp_df["日期"], errors="coerce").dt.date
|
|
327
|
+
temp_df["万份收益"] = pd.to_numeric(temp_df["万份收益"], errors="coerce")
|
|
328
|
+
temp_df["年化收益率7日"] = pd.to_numeric(temp_df["年化收益率7日"], errors="coerce")
|
|
329
|
+
temp_df["年化收益率14日"] = pd.to_numeric(
|
|
330
|
+
temp_df["年化收益率14日"], errors="coerce"
|
|
331
|
+
)
|
|
332
|
+
temp_df["年化收益率28日"] = pd.to_numeric(
|
|
333
|
+
temp_df["年化收益率28日"], errors="coerce"
|
|
334
|
+
)
|
|
335
|
+
temp_df["近1月"] = pd.to_numeric(temp_df["近1月"], errors="coerce")
|
|
336
|
+
temp_df["近3月"] = pd.to_numeric(temp_df["近3月"], errors="coerce")
|
|
337
|
+
temp_df["近6月"] = pd.to_numeric(temp_df["近6月"], errors="coerce")
|
|
338
|
+
temp_df["近1年"] = pd.to_numeric(temp_df["近1年"], errors="coerce")
|
|
339
|
+
temp_df["近2年"] = pd.to_numeric(temp_df["近2年"], errors="coerce")
|
|
340
|
+
temp_df["近3年"] = pd.to_numeric(temp_df["近3年"], errors="coerce")
|
|
341
|
+
temp_df["近5年"] = pd.to_numeric(temp_df["近5年"], errors="coerce")
|
|
342
|
+
temp_df["今年来"] = pd.to_numeric(temp_df["今年来"], errors="coerce")
|
|
343
|
+
temp_df["成立来"] = pd.to_numeric(temp_df["成立来"], errors="coerce")
|
|
336
344
|
return temp_df
|
|
337
345
|
|
|
338
346
|
|
|
@@ -358,13 +366,14 @@ def fund_lcx_rank_em() -> pd.DataFrame:
|
|
|
358
366
|
"_": "1603867224251",
|
|
359
367
|
}
|
|
360
368
|
headers = {
|
|
361
|
-
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)
|
|
369
|
+
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
|
|
370
|
+
"Chrome/81.0.4044.138 Safari/537.36",
|
|
362
371
|
"Referer": "https://fund.eastmoney.com/fundguzhi.html",
|
|
363
372
|
}
|
|
364
373
|
r = requests.get(url, params=params, headers=headers)
|
|
365
374
|
try:
|
|
366
375
|
data_json = r.json()
|
|
367
|
-
except:
|
|
376
|
+
except: # noqa: E722
|
|
368
377
|
return pd.DataFrame()
|
|
369
378
|
temp_df = pd.DataFrame(data_json["Data"])
|
|
370
379
|
temp_df.reset_index(inplace=True)
|
|
@@ -427,21 +436,22 @@ def fund_hk_rank_em() -> pd.DataFrame:
|
|
|
427
436
|
format_date = datetime.now().date().isoformat()
|
|
428
437
|
url = "https://overseas.1234567.com.cn/overseasapi/OpenApiHander.ashx"
|
|
429
438
|
params = {
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
439
|
+
"api": "HKFDApi",
|
|
440
|
+
"m": "MethodFundList",
|
|
441
|
+
"action": "1",
|
|
442
|
+
"pageindex": "0",
|
|
443
|
+
"pagesize": "5000",
|
|
444
|
+
"dy": "1",
|
|
445
|
+
"date1": format_date,
|
|
446
|
+
"date2": format_date,
|
|
447
|
+
"sortfield": "Y",
|
|
448
|
+
"sorttype": "-1",
|
|
449
|
+
"isbuy": "0",
|
|
450
|
+
"_": "1610790553848",
|
|
442
451
|
}
|
|
443
452
|
headers = {
|
|
444
|
-
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)
|
|
453
|
+
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
|
|
454
|
+
"Chrome/81.0.4044.138 Safari/537.36",
|
|
445
455
|
"Referer": "https://fund.eastmoney.com/fundguzhi.html",
|
|
446
456
|
}
|
|
447
457
|
r = requests.get(url, params=params, headers=headers)
|
|
@@ -494,20 +504,22 @@ def fund_hk_rank_em() -> pd.DataFrame:
|
|
|
494
504
|
"香港基金代码",
|
|
495
505
|
]
|
|
496
506
|
]
|
|
497
|
-
temp_df[
|
|
498
|
-
temp_df[
|
|
499
|
-
temp_df[
|
|
500
|
-
temp_df[
|
|
501
|
-
temp_df[
|
|
502
|
-
temp_df[
|
|
503
|
-
temp_df[
|
|
504
|
-
temp_df[
|
|
505
|
-
temp_df[
|
|
506
|
-
temp_df[
|
|
507
|
-
temp_df[
|
|
508
|
-
temp_df[
|
|
509
|
-
temp_df[
|
|
510
|
-
temp_df[
|
|
507
|
+
temp_df["日期"] = pd.to_datetime(temp_df["日期"], errors="coerce").dt.date
|
|
508
|
+
temp_df["单位净值"] = pd.to_numeric(temp_df["单位净值"], errors="coerce")
|
|
509
|
+
temp_df["日增长率"] = pd.to_numeric(temp_df["日增长率"], errors="coerce")
|
|
510
|
+
temp_df["近1周"] = pd.to_numeric(temp_df["近1周"], errors="coerce")
|
|
511
|
+
temp_df["近1月"] = pd.to_numeric(temp_df["近1月"], errors="coerce")
|
|
512
|
+
temp_df["近3月"] = pd.to_numeric(temp_df["近3月"], errors="coerce")
|
|
513
|
+
temp_df["近6月"] = pd.to_numeric(temp_df["近6月"], errors="coerce")
|
|
514
|
+
temp_df["近1年"] = pd.to_numeric(temp_df["近1年"], errors="coerce")
|
|
515
|
+
temp_df["近2年"] = pd.to_numeric(temp_df["近2年"], errors="coerce")
|
|
516
|
+
temp_df["近3年"] = pd.to_numeric(temp_df["近3年"], errors="coerce")
|
|
517
|
+
temp_df["今年来"] = pd.to_numeric(temp_df["今年来"], errors="coerce")
|
|
518
|
+
temp_df["成立来"] = pd.to_numeric(temp_df["成立来"], errors="coerce")
|
|
519
|
+
temp_df["成立来"] = pd.to_numeric(temp_df["成立来"], errors="coerce")
|
|
520
|
+
temp_df["可购买"] = temp_df["可购买"].map(
|
|
521
|
+
lambda x: "可购买" if x == "1" else "不可购买"
|
|
522
|
+
)
|
|
511
523
|
return temp_df
|
|
512
524
|
|
|
513
525
|
|
|
@@ -530,9 +542,6 @@ if __name__ == "__main__":
|
|
|
530
542
|
fund_open_fund_rank_em_df = fund_open_fund_rank_em(symbol="QDII")
|
|
531
543
|
print(fund_open_fund_rank_em_df)
|
|
532
544
|
|
|
533
|
-
fund_open_fund_rank_em_df = fund_open_fund_rank_em(symbol="LOF")
|
|
534
|
-
print(fund_open_fund_rank_em_df)
|
|
535
|
-
|
|
536
545
|
fund_open_fund_rank_em_df = fund_open_fund_rank_em(symbol="FOF")
|
|
537
546
|
print(fund_open_fund_rank_em_df)
|
|
538
547
|
|