首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于条件的选定列的字符串转换

基于条件的选定列的字符串转换
EN

Stack Overflow用户
提问于 2022-10-28 15:13:08
回答 1查看 35关注 0票数 0

我对Python相当陌生,并且一直在研究如何处理金融数据。

我有一个包含字符串的数据,表示数百万美元的自由现金流:

代码语言:javascript
复制
    FCF (t) FCF (t-1)   FCF (t-2)   FCF (t-3)   FCF (t-4)   FCF (t-5)   FCF (t-6)   Total Assets LTM
1006    0   0   0   0   0   0   0   378MM
1007    0   0   0   0   0   0   0   2.60B
1008    -3MM    -12MM   -1MM    -1MM    0   0   0   17MM
1009    261MM   265MM   603MM   118MM   148MM   199MM   179MM   5.00B

如何将这些字符串与"B“(数十亿)乘以1000,以便结果如下所示?

代码语言:javascript
复制
    FCF (t) FCF (t-1)   FCF (t-2)   FCF (t-3)   FCF (t-4)   FCF (t-5)   FCF (t-6)   Total Assets LTM
1006    0   0   0   0   0   0   0   378
1007    0   0   0   0   0   0   0   2600
1008    -3  -12 -1  -1  0   0   0   17
1009    261 265 603 118 148 199 179 5000

谢谢你的帮助!

看到这个建议使用了一个系列,但我不知道如何将它应用到dataframe:

代码语言:javascript
复制
df = pd.DataFrame(
    {
        "date": pd.Series(["FCF (t)", "FCF (t-1)",   "FCF (t-2)",   "FCF (t-3)",   "FCF (t-4)",  "FCF (t-5)",   "FCF (t-6)",   "Total Assets"], dtype=np.dtype("O")),
        "value": pd.Series(["1242MM",    "-216MM",    "1.11B",   "-994MM",    "519MM", "-3069MM",   "1.49B",   "360"], dtype=np.dtype("O"))
    }
)

def parse_currency(value):
    if value[-1] == "M":
        return float(value[0:-1])
    elif value[-1] == "B":
        return float(value[0:-1]) * 1000
    else:
        return float(value[0:-1]) / 1000


ser = df["value"]
ser = ser.apply(parse_currency)
df["value"] = ser
EN

回答 1

Stack Overflow用户

发布于 2022-10-28 15:28:39

考虑到您的Dataframe只有 MM B的值,我创建了一个函数,该函数首先将列"value“的每个元素拆分为MM或B,并接受第一个元素,即数字部分,并将其保存到另一个列表中。

此列表现在将完全替换列值。

代码语言:javascript
复制
def parse_currency(df):
    val = df["value"].to_list()
    val_new = []
    for cur in val:
        if "MM" in cur:
            val_new.append(cur.split("MM")[0])
        elif "B" in cur:
            val_new.append(float(cur.split("B")[0])*1000)
        
    return val_new
   
val = parse_currency(df)
df['value'] = val

# print(df)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74237393

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档