Ane*_*tin 13 python csv split dataframe pandas
我试图根据逗号/空格分隔将列拆分为多个列.
我的数据框目前看起来像
KEYS 1
0 FIT-4270 4000.0439
1 FIT-4269 4000.0420, 4000.0471
2 FIT-4268 4000.0419
3 FIT-4266 4000.0499
4 FIT-4265 4000.0490, 4000.0499, 4000.0500, 4000.0504,
Run Code Online (Sandbox Code Playgroud)
我想要
KEYS 1 2 3 4
0 FIT-4270 4000.0439
1 FIT-4269 4000.0420 4000.0471
2 FIT-4268 4000.0419
3 FIT-4266 4000.0499
4 FIT-4265 4000.0490 4000.0499 4000.0500 4000.0504
Run Code Online (Sandbox Code Playgroud)
我的代码目前删除了KEYS列,我不知道为什么.任何人都可以改进或帮助解决问题吗?
v = dfcleancsv[1]
#splits the columns by spaces into new columns but removes KEYS?
dfcleancsv = dfcleancsv[1].str.split(' ').apply(Series, 1)
Run Code Online (Sandbox Code Playgroud)
Ant*_*y R 21
如果其他人想要将单个列(带有嵌入式列表,用逗号分隔)分成多个列(没有pd.concat) - 试试这个:
series.str.split(',', expand=True)
Run Code Online (Sandbox Code Playgroud)
这回答了我来这里寻找的问题.
Ane*_*tin 11
使用 Edchums 的答案
pd.concat([df[[0]], df[1].str.split(', ', expand=True)], axis=1)
Run Code Online (Sandbox Code Playgroud)
我能够通过替换我的变量来解决它。
dfcleancsv = pd.concat([dfcleancsv['KEYS'], dfcleancsv[1].str.split(', ', expand=True)], axis=1)
Run Code Online (Sandbox Code Playgroud)
OP 具有可变数量的输出列。在固定数量的输出列的特殊情况下,另一个命名结果列的优雅解决方案是使用多重分配。
加载示例数据集并将其整形为长格式以获得名为 的变量organ_dimension
。
import seaborn
iris = seaborn.load_dataset('iris')
df = iris.melt(id_vars='species', var_name='organ_dimension', value_name='value')
Run Code Online (Sandbox Code Playgroud)
拆分organ_dimension
变量2个变量organ
并dimension
基于该_
分离器。
df[['organ', 'dimension']] = df['organ_dimension'].str.split('_', expand=True)
df.head()
Out[10]:
species organ_dimension value organ dimension
0 setosa sepal_length 5.1 sepal length
1 setosa sepal_length 4.9 sepal length
2 setosa sepal_length 4.7 sepal length
3 setosa sepal_length 4.6 sepal length
4 setosa sepal_length 5.0 sepal length
Run Code Online (Sandbox Code Playgroud)
基于这个答案 “如何将一列拆分为两列?”