Python 如何在所有列上应用分解
我在下面有一个数据框Python 如何在所有列上应用分解,python,pandas,Python,Pandas,我在下面有一个数据框 df = pd.DataFrame({'var1': ['d,e,f', '', np.nan], 'var2': ['1,2', 2, 3]}) 我想把所有的柱子都炸开 df.assign(var1=df['var1'].str.split(',').explode('var1') 我的当前输出低于 var1 var2 0 d 1,2 0 e 1,2 0 f 1,2 1 2 2
df = pd.DataFrame({'var1': ['d,e,f', '', np.nan], 'var2': ['1,2', 2, 3]})
我想把所有的柱子都炸开
df.assign(var1=df['var1'].str.split(',').explode('var1')
我的当前输出低于
var1 var2
0 d 1,2
0 e 1,2
0 f 1,2
1 2
2 NaN 3
我的预期出局了
var1 var2
0 d 1
0 e 1
0 f 1
0 d 2
0 e 2
0 f 2
1 2
2 NaN 3
- 我不知道
的名称,它将出现差异列
- 它每次都会不同,列的长度现在也会增加
- 我们可以做iloc吗
df = df.applymap(lambda x: x.split(',') if type(x) == str else x)
for i in range(1, df.shape[1] + 1):
df = df.explode(df.columns[-i])
输出:
var1 var2
0 d 1
0 e 1
0 f 1
0 d 2
0 e 2
0 f 2
1 2
2 NaN 3
另一个具有连续拆分的选项:
for i in range(1, df.shape[1] + 1):
df[df.columns[-i]] = df[df.columns[-i]].apply(lambda x:
x.split(',') if type(x) == str else x)
df = df.explode(df.columns[-i])
你的命令中不应该是
var2
而不是var1
?为什么在这里使用applymap?我有大约5列/26264行的东西,我得到了内存错误(26264,6)是我的形状眼睛的最终形状,但在分解它的(18,7)@Nons之前,我刚刚尝试了起始形状(20,10)和结果形状(317.700.486,10),没有问题。这花了一段时间,确实使用了相当多的内存,但它工作得很好。