使用设置规则组合 Pandas 中的两列
Combining two columns in Pandas using a set rule
我有一个大的 Pandas 数据框,大致如下所示:
df = pd.Dataframe({'1m1y_vol': {0: 71.0, 1: 60.1, 2: 68.95},
'1m25y_vol': {0: 75.9, 1: 81.45, 2: 89.4},
'Days_since_meeting': {0: 8, 1: 1, 2: 5},
'Days_to_meeting': {0: -50, 1: -39, 2: -35}})
_vol
列代表一些波动性,Days_since_meeting
是某个事件发生后经过的天数,Days_to_meeting
是下一个事件发生前的天数(两列都包含整数)。
我想创建一个名为 time_window
的新列,其中 return 是 Days_since_meeting
的值,如果它的值 <= 10 天,或者 return Days_to_meeting
的值否则。 objective 是 time_window
列仅包含 -10 到 10 之间的整数(我已经过滤了数据框以仅保留 Days_since_meeting
<= 10 或 Days_to_meeting
> 的数据= -10,所以现在只需合并两列即可)。
我尝试使用 df.combine()
方法使用以下代码来创建一个新的单列数据框,我可以将其与主数据框连接,但它只有 returns NaNs:
time_window = df.loc[:,["Days_to_meeting"]].rename(columns{"Days_to_meeting":"Time_window"})
days_since_meeting = df.loc[:,["Days_since_meeting"]].rename(columns={"Days_since_meeting":"Time_window"})
def define_time_window_func(s1, s2):
s3 = pd.Series()
for i, j in zip(s1, s2):
if i <= 10:
s3.append(pd.Series([i]))
else:
s3.append(pd.Series([j]))
time_window.combine(days_since_meeting, define_time_window_func)
任何帮助将不胜感激!
这是您要查找的内容吗?如果不是,我不确定我是否理解问题。
df = pd.DataFrame({'1m1y_vol': {0: 71.0, 1: 60.1, 2: 68.95},
'1m25y_vol': {0: 75.9, 1: 81.45, 2: 89.4},
'Days_since_meeting': {0: 8, 1: 1, 2: 5},
'Days_to_meeting': {0: -50, 1: -39, 2: -35}})
df['time_window'] = np.where(df['Days_since_meeting'] <= 10, df['Days_since_meeting'], df['Days_to_meeting'])
df
我有一个大的 Pandas 数据框,大致如下所示:
df = pd.Dataframe({'1m1y_vol': {0: 71.0, 1: 60.1, 2: 68.95},
'1m25y_vol': {0: 75.9, 1: 81.45, 2: 89.4},
'Days_since_meeting': {0: 8, 1: 1, 2: 5},
'Days_to_meeting': {0: -50, 1: -39, 2: -35}})
_vol
列代表一些波动性,Days_since_meeting
是某个事件发生后经过的天数,Days_to_meeting
是下一个事件发生前的天数(两列都包含整数)。
我想创建一个名为 time_window
的新列,其中 return 是 Days_since_meeting
的值,如果它的值 <= 10 天,或者 return Days_to_meeting
的值否则。 objective 是 time_window
列仅包含 -10 到 10 之间的整数(我已经过滤了数据框以仅保留 Days_since_meeting
<= 10 或 Days_to_meeting
> 的数据= -10,所以现在只需合并两列即可)。
我尝试使用 df.combine()
方法使用以下代码来创建一个新的单列数据框,我可以将其与主数据框连接,但它只有 returns NaNs:
time_window = df.loc[:,["Days_to_meeting"]].rename(columns{"Days_to_meeting":"Time_window"})
days_since_meeting = df.loc[:,["Days_since_meeting"]].rename(columns={"Days_since_meeting":"Time_window"})
def define_time_window_func(s1, s2):
s3 = pd.Series()
for i, j in zip(s1, s2):
if i <= 10:
s3.append(pd.Series([i]))
else:
s3.append(pd.Series([j]))
time_window.combine(days_since_meeting, define_time_window_func)
任何帮助将不胜感激!
这是您要查找的内容吗?如果不是,我不确定我是否理解问题。
df = pd.DataFrame({'1m1y_vol': {0: 71.0, 1: 60.1, 2: 68.95},
'1m25y_vol': {0: 75.9, 1: 81.45, 2: 89.4},
'Days_since_meeting': {0: 8, 1: 1, 2: 5},
'Days_to_meeting': {0: -50, 1: -39, 2: -35}})
df['time_window'] = np.where(df['Days_since_meeting'] <= 10, df['Days_since_meeting'], df['Days_to_meeting'])
df