python pandas 行轉列 一個單元格多個字符串轉成一列 列轉行


# 一個單元格轉成一列
def
row_to_col(df,key,value): #key 列名,value 需要轉列的字段 df_left = df[[key]] df_values = df[value].str.split(", |,",expand=True)#expand=True單獨成列,修改你的分隔符號 df_stack = df_values.stack()#行轉列 df_stack = df_stack.reset_index(level=1,drop=True)#刪除第二列索引 df_right = pd.concat([df_stack],axis=1,keys=(value,))#給第二列增加列名 df = pd.merge(df_left,df_right,how='left',left_index=True,right_index=True)#根據索引值進行left join df = df.reset_index(level=0,drop=True)#重置索引 return df

# 這個版本是返回原df所有列
def
row_to_col(df,value): #,value 需要轉列的字段 key = 'index' df['index'] = df.index df_raw = df[[i for i in df.columns if i not in [key,value]]] df_raw['index'] = df_raw.index df_left = df[[key]] df_values = df[value].str.split(",|,",expand=True)#expand=True單獨成列,修改你的分隔符號 df_stack = df_values.stack()#行轉列 df_stack = df_stack.reset_index(level=1,drop=True)#刪除第二列索引 df_right = pd.concat([df_stack],axis=1,keys=(value,))#給第二列增加列名 df = pd.merge(df_left,df_right,how='left',left_index=True,right_index=True)#根據索引值進行left join df = df.reset_index(level=0,drop=True)#重置索引 df = pd.merge(df,df_raw,on='index')#根據索引值進行left join return df

 



# 多個單元格合並成一列
def ab(df):
    return', '.join(df.values)
#剔除空字符或者空值
data = data[(data['
project'].isnull()==False) & (data['project']!='')]

data1 = data.groupby(['id'])['project'].apply(ab)
df = data1.reset_index()


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM