Python 为每个字符拆分数据帧列
我有多个dataframe列,如下所示:Python 为每个字符拆分数据帧列,python,pandas,dataframe,Python,Pandas,Dataframe,我有多个dataframe列,如下所示: Day1 0 DDDDDDDDDDBBBBBBAAAAAAAAAABBBBBBDDDDDDDDDDDDDDDD 1 DDDDDDDDDDBBBBBBAAAAAAAAAABBBBBBDDDDDDDDDDDDDDDD 2 DDDDDDDDDDBBBBBBAAAAAAAAAABBBBBBDDDDDDDDDDDDDDDD 3 DDDDDDDDDDBBBBBBAAAAAAAAAABBBBBB
Day1
0 DDDDDDDDDDBBBBBBAAAAAAAAAABBBBBBDDDDDDDDDDDDDDDD
1 DDDDDDDDDDBBBBBBAAAAAAAAAABBBBBBDDDDDDDDDDDDDDDD
2 DDDDDDDDDDBBBBBBAAAAAAAAAABBBBBBDDDDDDDDDDDDDDDD
3 DDDDDDDDDDBBBBBBAAAAAAAAAABBBBBBDDDDDDDDDDDDDDDD
4 DDDDDDDDDDBBBBBBAAAAAAAAAABBBBBBDDDDDDDDDDDDDDDD
我想要的是,每个字符都在自己的列中分开:
012345678910111213....
0 DDDDDDDDDDBBBBBBAAAAAAAAAABBBBBBDDDDDDDDDDDDDDDD
1 DDDDDDDDDDBBBBBBAAAAAAAAAABBBBBBDDDDDDDDDDDDDDDD
2 DDDDDDDDDDBBBBBBAAAAAAAAAABBBBBBDDDDDDDDDDDDDDDD
3 DDDDDDDDDDBBBBBBAAAAAAAAAABBBBBBDDDDDDDDDDDDDDDD
4 DDDDDDDDDDBBBBBBAAAAAAAAAABBBBBBDDDDDDDDDDDDDDDD
因此,“第1天-列”被分成48列,每列都有一个值A/B/C/D
我尝试使用split,但没有成功。您可以调用
apply
,并且对于列表中的值,每行调用pd.Series
:
In [16]:
df['Day1'].apply(lambda x: pd.Series(list(x)))
Out[16]:
0 1 2 3 4 5 6 7 8 9 ... 38 39 40 41 42 43 44 45 46 47
0 D D D D D D D D D D ... D D D D D D D D D D
1 D D D D D D D D D D ... D D D D D D D D D D
2 D D D D D D D D D D ... D D D D D D D D D D
3 D D D D D D D D D D ... D D D D D D D D D D
4 D D D D D D D D D D ... D D D D D D D D D D
[5 rows x 48 columns]
看起来您有尾随空格,请使用str.rstrip
删除这些空格:
df['Day1'] = df['Day1'].str.rstip()
然后使用以下方法执行上述操作:
试试这个:
df['Day1'].str.split(pat=“\s*”,expand=True)
它将有空的第一列和最后一列,因此您必须使用
df['Day1'].iloc[:,1:-1]
嘿,我试过你的方法……我编辑了我的问题,有什么问题吗wrong@WarryS.,有前导空格还是尾随空格?df.Day1.str.len()
的输出是什么?它的每个条目@MaxU都有48个vor,值之间没有spaces@WarryS.,我无法使用提供的样本数据集重现此行为:(感谢您的帮助@MaxUPost raw data,将您的数据加载到df中的代码,如果我们的答案不起作用,为了让我们尝试复制您的问题看起来您有尾随空格,请尝试dataframe['Mo']dataframe['Mo'].str.rstrip()
要删除任何尾随空格shi@EdChum,我这样做了,但结果仍然是一样的…请参阅我的第一条评论,没有数据复制,这变成了钓鱼探险。我发现了问题,我有尾随空格。谢谢!!!@EdChum
In [19]: df.Day1.str.extractall('(.)', flags=re.U)[0].unstack().rename_axis(None, 1)
Out[19]:
0 1 2 3 4 5 6 7 8 9 ... 38 39 40 41 42 43 44 45 46 47
0 D D D D D D D D D D ... D D D D D D D D D D
1 D D D D D D D D D D ... D D D D D D D D D D
2 D D D D D D D D D D ... D D D D D D D D D D
3 D D D D D D D D D D ... D D D D D D D D D D
4 D D D D D D D D D D ... D D D D D D D D D D
[5 rows x 48 columns]