我上一个问题的后续问题--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
谢谢你的帮助!你知道吗
让我们试试:
输出:
此方法使用
apply
和函数:输出:
这些函数也可以重构成一个函数,但你可以理解其中的要点。我建议使用
apply
而不是熊猫的其他方法,因为apply
更容易记忆和定制。希望这有帮助。你知道吗我采用了另一种方法:循环代码的长度,假设您不会有太多的级别。你知道吗
我们的想法是首先在查找表中添加级别1,然后添加级别2和级别3。。。 代码看起来很难看,但希望很容易理解。你知道吗
相关问题 更多 >
编程相关推荐