我对Python相当陌生,并且一直在研究如何处理金融数据。
我有一个包含字符串的数据,表示数百万美元的自由现金流:
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,以便结果如下所示?
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:
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发布于 2022-10-28 15:28:39
考虑到您的Dataframe只有 MM 和B的值,我创建了一个函数,该函数首先将列"value“的每个元素拆分为MM或B,并接受第一个元素,即数字部分,并将其保存到另一个列表中。
此列表现在将完全替换列值。
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)https://stackoverflow.com/questions/74237393
复制相似问题