DataFrame
# |Name |Price |24h |Volume(24h)
50|Maker50MKR |$1,096.96|4,52 |$351,617,227
36|Decentraland36MANA |$0.9754 |4,11 |$265,949,302
47|Bitcoin SV47BSV |$60.38 |4,08 |$50,895,114
86|1inch Network861INCH|$0.7637 |3,74 |$72,279,229
38|Hedera38HBAR |$0.07594 |3,72 |$58,825,304期望结果
# |Name |Ticker|Price |24h |Volume(24h)
50|Maker |MKR |$1,096.96|4,52 |$351,617,227
36|Decentraland |MANA |$0.9754 |4,11 |$265,949,302
47|Bitcoin SV |BSV |$60.38 |4,08 |$50,895,114
86|1inch Network|1INCH |$0.7637 |3,74 |$72,279,229
38|Hedera |HBAR |$0.07594 |3,72 |$58,825,304问题是:
没有固定数字/数字的字符串(0-100)
发布于 2022-08-01 14:10:37
pd.DataFrame(df.apply(lambda x: x.Name.split(str(x["#"])), axis=1).values.tolist())发布于 2022-08-01 14:14:24
因此,您可以根据#列将当前名称拆分为名称和代码。下面的代码可能不是最好的代码,也不是最优的,但它确实可以满足您的需要.
也许一位熊猫大师可以对此进行优化。我对此很感兴趣。
# insert Ticker column
df.insert(df.columns.get_loc("Name")+1, "Ticker", None)
for index, row in df.iterrows():
# split the thing based on '#' column and update the columns
df.at[index, "Name"], df.at[index, "Ticker"] = row["Name"].split(str(row["#"]))
print(df)由此产生的df:
# Name Ticker Price 24h Volume(24h)
0 50 Maker MKR $1,096.96 4,52 $351,617,227
1 36 Decentraland MANA $0.9754 4,11 $265,949,302
2 47 Bitcoin SV BSV $60.38 4,08 $50,895,114
3 86 1inch Network 1INCH $0.7637 3,74 $72,279,229
4 38 Hedera HBAR $0.07594 3,72 $58,825,304发布于 2022-08-01 13:42:08
df['Name'] = df['Name'].apply(lambda name: re.search(r"^[a-zA-Z\s]+", name).group())https://stackoverflow.com/questions/73194511
复制相似问题