【发布时间】:2019-12-27 13:31:00
【问题描述】:
跟进我之前的问题 -- Creating new columns based on value from another column in pandas
我现在的目标是:
Code Name Level1 Level1Name Level2 Level2Name Level3 Level3Name
0 A USA A USA
1 AM Massachusetts A USA AM Massachusetts
2 AMB Boston A USA AM Massachusetts AMB Boston
3 AMS Springfield A USA AM Massachusetts AMS Springfiled
4 D Germany D Germany
5 DB Brandenburg D Germany DB Brandenburg
6 DBB Berlin D Germany DB Brandenburg DBB Berlin
7 DBD Dresden D Germany DB Brandenburg DBD Dresden
以 Scott Boston 的代码为基础,到目前为止:
match 0 1 2
0 A A A
1 A AM AM
2 A AM AMB
3 A AM AMS
4 D D D
5 D DB DB
6 D DB DBB
7 D DB DBD
我的方法是遍历每一列并删除与该列中的其余值长度不同但似乎无法弄清楚逻辑的行。
示例代码:
df = pd.read_excel(r'/Users/BoBoMann/Desktop/Sequence.xlsx')
df['Codes'] = [[*i] for i in df['Code']]
df_level = df['Code'].str.extractall('(.)')[0].unstack('match').fillna('').cumsum(axis=1)
df_level
感谢您的帮助!
【问题讨论】: