我已将txt文件导入熊猫数据框,结果如下所示:
Add
我想将该条目拆分为所有单独的数字,并转换为数据框,其中每一行都是上述条目的单个元素:
数据框应如下所示:
0 0101110011110110111001010100001111100010010010...
Name: 0, dtype: object
注意:0 0 \\
1 1 \\
2 0 \\
3 1 \\
4 1 \\
5 1 \\
6 0 \\
7 0 \\
....
是行索引。
有什么想法吗?谢谢!
答案 0 :(得分:1)
使用pandas可以按以下步骤操作:
pd.DataFrame(df[0].apply(list)[0])
这是做什么的:
可重复的例子:
In [26]: df = pd.DataFrame(['0101110011110110111001010100001111100010010010'])
In [27]: df
Out[27]:
0
0 0101110011110110111001010100001111100010010010
In [28]: pd.DataFrame(df[0].apply(list)[0]).head(10)
Out[28]:
0
0 0
1 1
2 0
3 1
4 1
5 1
6 0
7 0
8 1
9 1
In [29]:
答案 1 :(得分:1)
您可以尝试直接正确导入文件,而不是先创建格式错误的数据框。由于pandas建立在numpy之上,你也可以使用:
>>> import numpy as np
>>> np.array(list('0101110011110110111001010100001111100010010010'))
array(['0', '1', '0', '1', '1', '1', '0', '0', '1', '1', '1', '1', '0',
'1', '1', '0', '1', '1', '1', '0', '0', '1', '0', '1', '0', '1',
'0', '0', '0', '0', '1', '1', '1', '1', '1', '0', '0', '0', '1',
'0', '0', '1', '0', '0', '1', '0'],
dtype='<U1')
如果所有字符都是'0'
或'1'
,则可以定义一个布尔数组:
>>> a = np.array(list('0101110011110110111001010100001111100010010010'))
>>> a == '1'
array([False, True, False, True, True, True, False, False, True,
True, True, True, False, True, True, False, True, True,
True, False, False, True, False, True, False, True, False,
False, False, False, True, True, True, True, True, False,
False, False, True, False, False, True, False, False, True, False], dtype=bool)
然后,您可以根据此数组定义DataFrame
:
>>> pd.DataFrame(a == '1')
0
0 False
1 True
2 False
3 True
4 True
5 True
6 False
7 False
8 True
9 True
10 True
11 True
12 False
...
您没有丢失任何信息,但生成的对象应占用更少的空间并加快处理速度。
答案 2 :(得分:0)
您可以使用list
拆分
pd.DataFrame(list(df[0].item()))
,或者
pd.DataFrame(list(df[0].iloc[0]))
实施例
In [3526]: pd.DataFrame(list(df[0].item())).head(10)
Out[3526]:
0
0 0
1 1
2 0
3 1
4 1
5 1
6 0
7 0
8 1
9 1
详细
In [3527]: df
Out[3527]:
0
0 0101110011110110111001010100001111100010010010