【发布时间】:2022-06-13 09:53:32
【问题描述】:
我有一个这样的数据框:
| Ticker | instrument_name | year | month | instrument_type | expiry_type |
|---|---|---|---|---|---|
| ABAN10SEPFUT | ABAN | 10 | SEP | FUT | NaN |
| ABAN10OCTFUT | ABAN | 10 | OCT | FUT | NaN |
| ABAN10NOVFUT | ABAN | 10 | NOV | FUT | NaN |
我想按 instrument_type ('FUT') 分组并在 month 中查找唯一值。 然后将唯一值与 month 列进行比较,并将 expiry_type 列中的值替换为 'I','II','III'。
预期结果:
| Ticker | instrument_name | year | month | instrument_type | expiry_type |
|---|---|---|---|---|---|
| ABAN10SEPFUT | ABAN | 10 | SEP | FUT | I |
| ABAN10OCTFUT | ABAN | 10 | OCT | FUT | II |
| ABAN10NOVFUT | ABAN | 10 | NOV | FUT | III |
我的代码看起来像 #1
def condition(x):
if x =='SEP':
return "I"
elif x =='OCT':
return "II"
elif x =='NOV':
return "III"
else:
return ''
#2
for index, row in path.iterrows():
data = pd.read_parquet(row['location'])
data['expiry_type'] = np.where((data['instrument_type'] == 'FUT'),data['month'].apply(condition),'')
由于我已经知道月份列中的唯一值,所以我创建了一个自定义函数来替换 expiry_type 列中的值。我有类似的文件,所以有没有办法找到唯一值并自动替换。 我怎么做?提前谢谢!
【问题讨论】:
标签: python pandas numpy pandas-groupby