【发布时间】:2021-07-02 09:41:40
【问题描述】:
我有一个数据框
df = pd.DataFrame([["A","a*k,x*k,z,c*m,r,s,f*f,e*d"], ["B","h*t,y,a,w*b,Z,c*b,i*t,f*f"]], columns=["id","c1"])
我想在以下条件下拆分以逗号分隔的列 c1:
- 只保留那些带有 * 的字符串
- 如果 * 之后如果有任何重复的字母,则不要考虑 2ns 字符串取下一个。
- 保留唯一的前 3 个字符串并将它们拆分为 * 并制作 2 个单独的列
示例: 对于 c1 中的第一行,
- z,r,s 没有 *,所以删除它们
- 在 a*k 和 x *k 中,k 是重复的,所以保留第一个
- 所以前 3 名将是 a*k、c *m、f *f,将其拆分为 2 列 c2、a、c、f 和 c3 k、m、f。
预期输出:
df_out = pd.DataFrame([["A","a*k,x*k,z,c*m,r,s,f*f,e*d","a,c,f","k,m,f"], ["B","h*t,y,a,w*b,Z,c*b,i*b,f*f","h,w,f","t,b,f"]], columns=["id","c1","c2","c3"])
怎么做?
【问题讨论】:
标签: python python-3.x pandas python-2.7 dataframe