Python 熊猫:将长度不等的列表列拆分为多列
我有一个熊猫数据框,如下所示:Python 熊猫:将长度不等的列表列拆分为多列,python,pandas,Python,Pandas,我有一个熊猫数据框,如下所示: codes 1 [71020] 2 [77085] 3 [36415] 4 [99213, 99287] 5 [99233, 99233, 99233] code_1 code_2 code_3
codes
1 [71020]
2 [77085]
3 [36415]
4 [99213, 99287]
5 [99233, 99233, 99233]
code_1 code_2 code_3
1 71020
2 77085
3 36415
4 99213 99287
5 99233 99233 99233
我正在尝试将df['code']
中的列表拆分为列,如下所示:
codes
1 [71020]
2 [77085]
3 [36415]
4 [99213, 99287]
5 [99233, 99233, 99233]
code_1 code_2 code_3
1 71020
2 77085
3 36415
4 99213 99287
5 99233 99233 99233
其中没有值的列(因为列表没有那么长)用空格或NaN或其他东西填充
我见过类似的答案和其他类似的答案,当他们在等长的列表上工作时,当我尝试在不等长的列表上使用这些方法时,他们都会出错。有什么好办法吗?试试:
pd.DataFrame(df.codes.values.tolist()).add_prefix('code_')
code_0 code_1 code_2
0 71020 NaN NaN
1 77085 NaN NaN
2 36415 NaN NaN
3 99213 99287.0 NaN
4 99233 99233.0 99233.0
包括
索引
pd.DataFrame(df.codes.values.tolist(), df.index).add_prefix('code_')
code_0 code_1 code_2
1 71020 NaN NaN
2 77085 NaN NaN
3 36415 NaN NaN
4 99213 99287.0 NaN
5 99233 99233.0 99233.0
我们可以通过以下内容确定所有格式:
f = lambda x: 'code_{}'.format(x + 1)
pd.DataFrame(
df.codes.values.tolist(),
df.index, dtype=object
).fillna('').rename(columns=f)
code_1 code_2 code_3
1 71020
2 77085
3 36415
4 99213 99287
5 99233 99233 99233
另一个解决方案:
In [95]: df.codes.apply(pd.Series).add_prefix('code_')
Out[95]:
code_0 code_1 code_2
1 71020.0 NaN NaN
2 77085.0 NaN NaN
3 36415.0 NaN NaN
4 99213.0 99287.0 NaN
5 99233.0 99233.0 99233.0
如果我有专栏要写。有什么方法可以做到这一点,而不是在拆分后重新合并?这个解决方案最适合我,因为它能够处理偶尔有空列表的序列