python实现在"\\168.63.22.177\台账\境内互换\境内收益互换-230522-逐笔盯保"中的"持仓明细"sheet的B列合同编号中搜索['HTSC-0158-PAZQ-0017-ITRS-221129-1', 'HTSC-0161-PAZQ-0018-ITRS-221206-1', 'HTSC-0178-GDZQ-0010-ITRS-221213-2', 'HTSC-0045-GDZQ-0005-ITRS-230215-1']这四笔合约,找到对应行,输出对应行的S列合约乘数
时间: 2023-07-31 17:13:19 浏览: 39
以下是用Python实现搜索并输出结果的代码:
```python
import pandas as pd
# 读入Excel文件,注意设置读取的sheet名
df = pd.read_excel(
"\\\\168.63.22.177\\台账\\境内互换\\境内收益互换-230522-逐笔盯保.xlsx",
sheet_name="持仓明细"
)
# 搜索B列中指定的合同编号
target_contracts = [
'HTSC-0158-PAZQ-0017-ITRS-221129-1',
'HTSC-0161-PAZQ-0018-ITRS-221206-1',
'HTSC-0178-GDZQ-0010-ITRS-221213-2',
'HTSC-0045-GDZQ-0005-ITRS-230215-1'
]
mask = df["合同编号"].isin(target_contracts)
# 输出对应行的S列合约乘数
print(df.loc[mask, "S列合约乘数"])
```
注意,上述代码中的 "\\" 起到了转义的作用,将 "\\\\168.63.22.177" 转义为 "\\\\"。如果直接将IP地址写在字符串中,会因为 "\t" 被当作TAB字符,无法正确解析。
相关问题
python實現讀取“\\168.63.22.177\台账\境内互换”下的excel文件“境内收益互换-230522-逐笔盯保”,讀取sheet“現金流水表”,讀取“流水確認日”為“2023/5/19”的所有合約
可以使用Python中的pandas库来读取Excel文件。以下是一段示范代码:
```python
import pandas as pd
# 读取Excel文件
file_path = r"\\168.63.22.177\台账\境内互换\境内收益互换-230522-逐笔盯保.xlsx"
df = pd.read_excel(file_path, sheet_name="現金流水表")
# 筛选满足条件的数据
selected_df = df[df["流水確認日"] == "2023/5/19"]
# 获取合约信息
contracts = selected_df["合约"]
# 输出结果
print(contracts)
```
在示范代码中,首先使用pandas库的read_excel方法读取了指定的Excel文件,并指定了要读取的表格名称。然后,使用DataFrame的方式来筛选出流水确认日为“2023/5/19”的数据。最后,获取符合条件的所有合约信息,并输出结果。
python使用pandas實現讀取“\168.63.22.177\台账\境内互换”下的excel文件“境内收益互换-230522-逐笔盯保”,讀取sheet“現金流水表”,讀取“流水確認日”為“2023/5/19”的所有B列“交易確認書編號”,若沒有值,則輸出“當日無平倉逐筆合約”,若有值(也有可能不止一個值),將讀取的交易確認書編號在excel文件“境内收益互换-230522-逐笔盯保”的sheet“持倉明細”中的B列“合同編號”中搜索,找到對應行,輸出該筆合約的S列合約乘數和Q列數量,同時將讀取的將以確認書編號在excel文件“境内收益互换-230522-逐笔盯保”的sheet“現金流水表”中的B列“交易確認書編號”中搜索,找到對應行,輸出該筆合約的J列終止數量、I列終止標的價格
好的,根据您的要求,我可以通过使用Python中的pandas包来实现您的需求。
首先,我需要使用pandas的read_excel函数来读取Excel文件,并指定需要读取的sheet和需要筛选的条件,如下所示:
```python
import pandas as pd
df = pd.read_excel(r'\\168.63.22.177\台账\境内互换\境内收益互换-230522-逐笔盯保.xlsx',
sheet_name='現金流水表',
usecols=['交易確認書編號', '流水確認日', '合同編號'])
df = df[df['流水確認日'] == '2023/5/19']
```
接着,我需要通过判断筛选出来的数据是否为空来输出相应的结果:
```python
if df.empty:
print('当日无平仓逐笔合约')
else:
confirm_nums = df['交易確認書編號'].tolist()
for confirm_num in confirm_nums:
detail_df = pd.read_excel(r'\\168.63.22.177\台账\境内互换\境内收益互换-230522-逐笔盯保.xlsx',
sheet_name='持倉明細',
usecols=['合同編號', '合約乘數', '數量'])
detail_df = detail_df[detail_df['合同編號'] == confirm_num]
if not detail_df.empty:
multiplier = detail_df.iloc[0]['合約乘數']
quantity = detail_df.iloc[0]['數量']
cash_flow_df = pd.read_excel(r'\\168.63.22.177\台账\境内互换\境内收益互换-230522-逐笔盯保.xlsx',
sheet_name='現金流水表',
usecols=['交易確認書編號', '終止標的價格', '終止數量'])
cash_flow_df = cash_flow_df[cash_flow_df['交易確認書編號'] == confirm_num]
if not cash_flow_df.empty:
terminate_price = cash_flow_df.iloc[0]['終止標的價格']
terminate_quantity = cash_flow_df.iloc[0]['終止數量']
print('交易确认书编码为%s的合约乘数为%s,数量为%s,终止标的价格为%s,终止数量为%s' % (
confirm_num, multiplier, quantity, terminate_price, terminate_quantity))
else:
print('找不到交易确认书编码为%s的现金流水记录' % confirm_num)
else:
print('找不到合同编码为%s的持仓明细记录' % confirm_num)
```
这样,我就可以实现您的需求了。希望能对您有所帮助。