簡體   English   中英

使用設置規則組合 Pandas 中的兩列

[英]Combining two columns in Pandas using a set rule

我有一個大熊貓數據框,大致如下所示:

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的新列,如果它的值 <= 10 天,則返回Days_since_meeting的值,否則返回Days_to_meeting的值。 目標是time_window列僅包含 -10 和 10 之間的整數(我已經過濾了數據幀以僅保留Days_since_meeting <= 10 或Days_to_meeting >= -10 的數據,因此現在只需將兩列合並即可) .

我已經嘗試使用df.combine()方法創建一個新的單列數據幀,我可以將它與主數據幀連接,但它只返回 NaN:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM