簡體   English   中英

如何將單個 Pandas Dataframe 列的內容拆分為多個新列

[英]How to Split the Contents of a Single Pandas Dataframe Column into Multiple New Columns

假設我有兩個運動隊的記錄數據。

d = {'Team': [1, 2], 'Record': ['5-0', '3-2']}
df = pd.DataFrame(data=d)
df

    Team    Record
0     1      5-0
1     2      3-2

我想將 append 記錄拆分為每個團隊的新列,如下所示:

d = {'Team': [1, 2], 'Record': ['5-0', '3-2'], 'Wins': [5, 3], 'Losses' : [0, 2]}
df = pd.DataFrame(data=d)
df


  Team  Record  Wins    Losses
0   1    5-0     5         0
1   2    3-2     3         2

由於連字符,Records 列中的數據是 object。

(df.dtypes)

Team       int64
Record    object
dtype: object

我將如何 go 這樣做? 它會是某種正則表達式,然后是通過 Record 列的每一行對 go 的列表理解嗎? 我想在 dataframe 中為大約 400 個團隊執行此操作。 在此先感謝您的幫助。

使用 pandas 字符串方法,特別是str splitstr get ,並將提取分配給新列:

    df = (df
         .assign(Wins= df.Record.str.split('-').str.get(0),
                 Losses = df.Record.str.split('-').str.get(-1)
            )
          )

df


  Team  Record  Wins    Losses
0   1    5-0     5         0
1   2    3-2     3         2

如果數據表現良好,您可以將Series.str.extract與命名捕獲組(Number)-(Number)一起使用。 然后連接回來。

pd.concat([df, df['Record'].str.extract(r'(?P<Wins>\d)-(?P<Losses>\d)')], axis=1)
#   Team Record Wins Losses
#0     1    5-0    5      0
#1     2    3-2    3      2

暫無
暫無

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

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