Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将列字符串转换为DataFrame中的多个列_Python_Python 3.x_Pandas - Fatal编程技术网

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我的错,我复制的数据不正确。我已经更新了我的答案。