如何根据两个现有列的值创建一个列?
How do I create a column based on the values of two existing columns?
我正在使用一个 Pandas DataFrame,其中包含 20 年的月度股票价格样本以及数百种不同股票的相应 returns。在按 'Date' 和 'Book-To-Market'(简称 'B/M')对样本进行排序后,我想创建一个列,将值 -1 分配给 returns 的股票具有最低 B/M 且值为 1 的公司与具有最高 B/M 的公司的股票 returns 的公司(样本的一半分配为 -1,另一半分配为 1) 样本中每个月。
我尝试在示例中为每个月创建 DataFrame 并为其赋予值,但我发现它不切实际。请在下面找到代码:
df = df.sort_values (by = ['Date','B/M'], ascending = True)
df
# Example of desired outcome (Note: 'Date' - dtype='datetime64[ns] - has been set as the index).
Date Company Name B/M Monthly Return Signal
|2000-01-31 | ORACLE | 0.29 | 0.048 | -1 |
|2000-01-31 | MICROSOFT | 0.37 | 0.032 | 1 |
|... |... |... |... |... |
|2000-02-29 | MICROSOFT | 0.08 | 0.016 | -1 |
|2000-02-29 | ORACLE | 0.30 | -0.07 | 1 |
感谢您的宝贵时间。
好的,请先计算B/M
的中位数
bm_median=df["B/M"].median()
然后创建一个列,您可以在其中检查 B/M 是否小于中位数
df["signal"]=df["B/M"]<bm_median
如果为假,则替换为 1,如果为真,则替换为 -1
df["signal"].replace(False,1,inplace=True)
df["signal"].replace(True,-1,inplace=True)
我正在使用一个 Pandas DataFrame,其中包含 20 年的月度股票价格样本以及数百种不同股票的相应 returns。在按 'Date' 和 'Book-To-Market'(简称 'B/M')对样本进行排序后,我想创建一个列,将值 -1 分配给 returns 的股票具有最低 B/M 且值为 1 的公司与具有最高 B/M 的公司的股票 returns 的公司(样本的一半分配为 -1,另一半分配为 1) 样本中每个月。
我尝试在示例中为每个月创建 DataFrame 并为其赋予值,但我发现它不切实际。请在下面找到代码:
df = df.sort_values (by = ['Date','B/M'], ascending = True)
df
# Example of desired outcome (Note: 'Date' - dtype='datetime64[ns] - has been set as the index).
Date Company Name B/M Monthly Return Signal
|2000-01-31 | ORACLE | 0.29 | 0.048 | -1 |
|2000-01-31 | MICROSOFT | 0.37 | 0.032 | 1 |
|... |... |... |... |... |
|2000-02-29 | MICROSOFT | 0.08 | 0.016 | -1 |
|2000-02-29 | ORACLE | 0.30 | -0.07 | 1 |
感谢您的宝贵时间。
好的,请先计算B/M
的中位数bm_median=df["B/M"].median()
然后创建一个列,您可以在其中检查 B/M 是否小于中位数
df["signal"]=df["B/M"]<bm_median
如果为假,则替换为 1,如果为真,则替换为 -1
df["signal"].replace(False,1,inplace=True)
df["signal"].replace(True,-1,inplace=True)