2015-10-04 95 views
0

我有以下數據框。嘗試解析字符串並在Python熊貓數據框中創建新列

Team Opponent Detail 
Redskins Rams Kirk Cousins .... Penaltyon Bill Smith, Holding:10 yards 

我想要做的就是創建一個使用大熊貓三列,這將使我的名字(在這種情況下,比爾·史密斯),違規的類型(進攻控股),多少它的成本隊(10碼)。所以它看起來像這樣

Team  Opponent Detail Name  Infraction Yards 
Redskins Rams   Bill Smith Holding 10 yards 

我用一些字符串操作來實際提取字段,但不知道如何創建一個新的列。我瀏覽了一些舊的專欄,但似乎無法使其工作。謝謝!

回答

0

你函數應該返回3個值,如...

def extract(r): 
    return r[28:38], r[-8:], r[-16:-9] 

首先創建空列:

df["Name"] = df["Infraction"] = df["Yards"] = "" 

...然後抹上的 「應用」 的結果列表。

df[["Name", "Infraction", "Yards"]] = list(df.Detail.apply(extract)) 

您可能會感興趣this更具體,但更擴展的答案。

+0

這將創建新列。現在我必須清理我的提取方法,這似乎並不奏效。謝謝!!!!! –

0

爲了創建一個新的列,你可以簡單地做:

your_df['new column'] = something 

例如,假設你想包含列的第一個字詳細

#toy dataframe 
my_df = pd.DataFrame.from_dict({'Team':['Redskins'], 'Oponent':['Rams'],'Detail':['Penaltyon Bill Smith, Holding:10 yards ']}) 

#apply a function that retrieves the first word 
my_df['new_word'] = my_df.apply(lambda x: x.Detail.split(' ')[0], axis=1) 

這是一個新列創建一個包含「Penaltyon」的列

現在,想象我現在想要創建兩個新列,一個用於第一個單詞,另一個用於第二個單詞。我可以創建一個新的數據框與兩列:

new_df = my_df.apply(lambda x: pd.Series({'first':x.Detail.split(' ')[0], 'second': x.Detail.split(' ')[1]}), axis=1) 

,現在我只需要將兩者連接起來dataframes:

pd.concat([my_df, new_df], axis=1) 
相關問題