首页 > 解决方案 > 字符串列到DataFrame中的多列

问题描述

我有一个包含多列的 DataFrame:

A     B     C

a1.   b1.   r: 200
            l: 350
            t:600

a2    b2.   

a3    b3.   r: 400
            t: 500

            

现在我想将 C 列(每个条目由 \n 分隔)分成多个列,如下所示:

A.  B.  r.   l.   t 
a1  b1  200. 350. 600
a2  b2
a3. b3. 400.      500

我尝试了一些技术,但无法做到。我尝试使用 df.apply 但无法修复 NA 列。有没有办法干净地实现这一目标?

谢谢。

标签: pythonpython-3.xpandas

解决方案


使用regexwith的解决方案str.split

df = pd.DataFrame(columns=['A', 'B', 'C'], data=[['a1', 'b1', 'r: 200\n l: 350\n t:600'], ['a2', 'b2', ''], ['a3', 'b3', 'r:400\n t:500']])
splitted = df.C.str.split('([r,l,t]{1}?):\s?(\d+)\n?\s?')
filtered = splitted.apply(lambda lst: list(filter(None, lst)))
numerical_values = filtered.apply(lambda lst: pd.Series(index=lst[0::2], data=lst[1::2], dtype=float))
df.join(numerical_values)

推荐阅读