Pyhon-将pandas数据帧字符串项拆分(分解)为单独的行
有一个pandas dataframe
文本字符串的一列包含逗号分隔的值。我想拆分每个CSV字段,并为每个条目创建一个新行(假设CSV干净并且只需要在','
上拆分)。例如,a
应变为b
:
In [7]: aOut[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 DataFrameimport 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