Python 将列字符串转换为DataFrame中的多个列
我有一个包含多列的数据框:Python 将列字符串转换为DataFrame中的多个列,python,python-3.x,pandas,Python,Python 3.x,Pandas,我有一个包含多列的数据框: 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.
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列。
有没有办法干净地实现这一点
谢谢。使用
regex
和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)
你的多重索引的模式是
a1,b1
,a2,b2
…an,bn
?…我的意思是它不是这样的a1,b3
,它不是多重索引。这是两列A和B。实际上这不起作用。有时C列可能只包含R和T。在这种情况下,它会错误地赋值。很抱歉造成混淆,我已编辑了问题。@user15350930我的错,我复制的数据不正确。我已经更新了我的答案。