注意:这篇文章纯粹是为了我自己看的,用来记笔记的。不用看
考虑一个DataFrame df:
col_name
0 Category1
1 item1()
2 item2()
3 Category2
4 item3()
5 item4()
6 item5()
需要转变为这样:
col_name category
1 item1() Category1
2 item2() Category1
4 item3() Category2
5 item4() Category2
6 item5() Category2
解决:让我们执行startswith
查找类别行并使用ffill
创建另一个列
import pandas as pd
#创建上述 df
df = pd.DataFrame({'col_name':['Category1', 'item1()', 'item2()', 'Category2', 'item3()', 'item4()', 'item5()']})
#解决方案代码
df['category']=df.col_name.mask(df.col_name.str.endswith(')')).ffill()
df=df[df.category!=df.col_name]
#输出结果
print(df)
运行结果为:(正解)√