gpt4 book ai didi

python - 如何使用 Python Pandas 获取字符串中的第一个和最后一个(可变)字符

转载 作者:行者123 更新时间:2023-12-01 09:10:34 27 4
gpt4 key购买 nike

我们有这个:

def get_prices():
prices = pd.read_json("https://api.binance.com/api/v1/ticker/allPrices")
prices_df = pd.DataFrame(prices)
prices_df.columns = ["Price","Symbol"]
prices_df = prices_df.set_index("Symbol")
prices_df["Asset"] = "??"
prices_df["Quote"] = "??"
return prices_df

这里的“符号”是由“ Assets ”+“报价”符号组成的一对,没有任何分隔。为了增加难度,“ Assets ”和“报价”的长度不同。示例:LTCBTC、BNBUSDT、NEOBTC、QTUMETH(您可以通过运行该函数查看更多示例)

但是我们知道“Quote”符号只能是4个:“USDT”,“BTC”,“ETH”,“BNB”

那么我们使用哪些代码来定义数据框中的每一列(“ Assets ”和“报价”)?

最佳答案

您可以使用的正则表达式是 ^\w+(USDT|BTC|ETH|BNB)$ ,它匹配以 1 个或多个单词字符开头的字符串 (\w+) 并以 USDTBTCETHBNB 子字符串结尾。但是,您需要对其进行调整以与 Pandas 一起使用。

您可以使用 str.extract 通过用捕获括号包裹相应的模式部分来用正确的值填充列:

prices_df["Asset"] = prices_df["Symbol"].str.extract(r'^(\w+)(?:USDT|BTC|ETH|BNB)$', expand=False).fillna('')
prices_df["Quote"] = prices_df["Symbol"].str.extract(r'^\w+(USDT|BTC|ETH|BNB)$', expand=False).fillna('')

您还可以使用命名捕获组来str.extract值并创建相应的列:

prices_df = prices_df.join(prices_df['Symbol'].str.extract(r'^(?P<Asset>\w+)(?P<Quote>USDT|BTC|ETH|BNB)$', expand=True))

Pandas 演示代码:

import pandas as pd
df = pd.DataFrame({'Symbol':['LTCBTC','BNBUSDT','NEOBTC','QTUMETH']})
df = df.join(df['Symbol'].str.extract(r'^(?P<Asset>\w+)(?P<Quote>USDT|BTC|ETH|BNB)$', expand=True))

输出:

>>> df
Symbol Asset Quote
0 LTCBTC LTC BTC
1 BNBUSDT BNB USDT
2 NEOBTC NEO BTC
3 QTUMETH QTUM ETH

关于python - 如何使用 Python Pandas 获取字符串中的第一个和最后一个(可变)字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51690718/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com