簡體   English   中英

pandas 一列有多個遮陽篷,如何拆分?

[英]pandas multiple awnsers in one column, How to split?

我有一個看起來像...的數據框

在此處輸入圖像描述

或者

    ConvertedComp LanguageWorkedWith
0   NaN           C#;HTML/CSS;JavaScript
1   NaN           JavaScript;Swift
2   NaN           Objective-C;Python;Swift
3   NaN           NaN
4   NaN           HTML/CSS;Ruby;SQL

我怎樣才能將這些語言分開,以便每種語言都在自己的列中? 並用介於兩者之間的 nan 值正確分組。

以便預期的 output 看起來像。

    ConvertedComp   C#   HTML/CSS   python   swift   Ruby   SQL   JavaScript   Objective-C
0   NaN             C#   HTML/CSS   NaN      NaN     NaN    Nan   JavaScript   NaN
1   NaN             NaN  NaN        NaN      Swift   NaN    NaN   JavaScript   NaN
2   NaN             NaN  NaN        Python   Swift   NaN    NaN   NaN          Objective-C
3   NaN             NaN  NaN        NaN      NaN     NaN    NaN   NaN          NaN
4   NaN             NaN  HTML/CSS   NaN      NaN     Ruby   SQL   NaN          NaN

使用Series.str.get_dummies作為指標,並轉換為 boolean 和numpy.where用列名和NaN替換值,傳遞給DataFrame並添加到 original:

mask = df.pop('LanguageWorkedWith').str.get_dummies(';').astype(bool)
df = df.join(pd.DataFrame(np.where(mask, mask.columns, np.nan), 
                          columns=mask.columns, 
                          index=df.index))
print (df)
   ConvertedComp   C#  HTML/CSS  JavaScript  Objective-C  Python  Ruby  SQL  \
0            NaN   C#  HTML/CSS  JavaScript          NaN     NaN   NaN  NaN   
1            NaN  NaN       NaN  JavaScript          NaN     NaN   NaN  NaN   
2            NaN  NaN       NaN         NaN  Objective-C  Python   NaN  NaN   
3            NaN  NaN       NaN         NaN          NaN     NaN   NaN  NaN   
4            NaN  NaN  HTML/CSS         NaN          NaN     NaN  Ruby  SQL   

   Swift  
0    NaN  
1  Swift  
2  Swift  
3    NaN  
4    NaN  

假設您正在使用pd.read_csv讀取數據,然后指定sep=";"

暫無
暫無

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

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