如果使用以下DataFrame,我可以拆分“ccy”字符串并创建两个新列:
我如何在下面的调整函数中使用DataFrame.assign执行相同的
我可以使用列表推导式来获得相同的结果,但是否有更简单/更清晰的方法使用assign?
与上表相同,但代码不够直观简单。简单胜于复杂。
df_so = pd.DataFrame.from_dict({0: 'gbp_usd',
1: 'eur_usd',
2: 'usd_cad',
3: 'usd_jpy',
4: 'eur_usd',
5: 'eur_usd'},orient='index',columns=["ccy"])
df_so[['base_ccy', 'quote_ccy']] = df_so['ccy'].str.split('_', 1, expand=True)
提供以下数据框。
索引 | 货币 | 基础货币 | 报价货币 |
---|---|---|---|
0 | gbp_usd | 英镑 | 美元 |
1 | eur_usd | 欧元 | 美元 |
2 | usd_cad | 美元 | 加元 |
3 | usd_jpy | 美元 | 日元 |
4 | eur_usd | 欧元 | 美元 |
5 | eur_usd | 欧元 | 美元 |
str.split
?我可以使用列表推导式来获得相同的结果,但是否有更简单/更清晰的方法使用assign?
def tweak_df (df_):
return (df_.assign(base_currency= lambda df_: [i[0] for i in df_['ccy'].str.split('_', 1)],
quote_currency= lambda df_: [i[1] for i in df_['ccy'].str.split('_', 1)],
)
)
tweak_df(df_so)
与上表相同,但代码不够直观简单。简单胜于复杂。