Pyhon-将pandas数据帧字符串项拆分(分解)为单独的行

有一个pandas dataframe文本字符串的一列包含逗号分隔的值。我想拆分每个CSV字段,并为每个条目创建一个新行(假设CSV干净并且只需要在','上拆分)。例如,a应变为b

In [7]: a

Out[7]:

var1 var2

0 a,b,c 1

1 d,e,f 2

In [8]: b

Out[8]:

var1 var2

0 a 1

1 b 1

2 c 1

3 d 2

4 e 2

5 f 2

到目前为止,我已经尝试了各种简单的函数,但是.apply当该方法用于轴上时,该方法似乎只接受一行作为返回值,因此我无法.transform工作。我们欢迎所有的建议!

示例数据:

from pandas import DataFrame

import numpy as np

a = DataFrame([{'var1': 'a,b,c', 'var2': 1},

{'var1': 'd,e,f', 'var2': 2}])

b = DataFrame([{'var1': 'a', 'var2': 1},

{'var1': 'b', 'var2': 1},

{'var1': 'c', 'var2': 1},

{'var1': 'd', 'var2': 2},

{'var1': 'e', 'var2': 2},

{'var1': 'f', 'var2': 2}])

我知道这行不通,因为我们通过numpy丢失了DataFrame元数据,但是它应该使你了解我尝试做的事情:

def fun(row):

letters = row['var1']

letters = letters.split(',')

out = np.array([row] * len(letters))

out['var1'] = letters

a['idx'] = range(a.shape[0])

z = a.groupby('idx')

z.transform(fun)

回答:

这样怎么样:

In [55]: pd.concat([Series(row['var2'], row['var1'].split(','))              

for _, row in a.iterrows()]).reset_index()

Out[55]:

index 0

0 a 1

1 b 1

2 c 1

3 d 2

4 e 2

5 f 2

然后,你只需要重命名列

以上是 Pyhon-将pandas数据帧字符串项拆分(分解)为单独的行 的全部内容, 来源链接: utcz.com/qa/425750.html

回到顶部