首页 > 解决方案 > 如何将仅包含数字的数据框中的列拆分为熊猫中的多列

问题描述

我有一个包含以下数据的 .dat 文件:

0001100000101010100
110101000001111
101100011001110111
0111111010100
1010111111100011

需要计算每行中零和一的数量

我试过熊猫。


df1=pd.read_csv('data.dat',header=None) df1.head()
                 0   1100000101010100

1   110101000001111
2   101100011001110111
3   111111010100
4   1010111111100011

df1.columns=['kirti']
df1.head()
        Kirti
_______________________
0   1100000101010100
1   110101000001111
2   101100011001110111
3   111111010100
4   1010111111100011

我需要根据每行中的 0 和 1 将数据框拆分为多列。

最大列数将等于数据框中任何行中的最大零和一。

标签: pandasdataframedata-analysisdata-processing

解决方案


DataFrame首先按参数创建一列names并将dtype=str列转换为字符串:

import pandas as pd

temp="""0001100000101010100
110101000001111
101100011001110111
0111111010100
1010111111100011"""
#after testing replace 'pd.compat.StringIO(temp)' to 'filename'
df = pd.read_csv(StringIO(temp), header=None, names=['kirti'], dtype=str)

print (df)
                 kirti
0  0001100000101010100
1      110101000001111
2   101100011001110111
3        0111111010100
4     1010111111100011

DataFrame然后通过将值转换为s 来创建新list的:

df = pd.DataFrame([list(x) for x in df['kirti']])
print (df)

   0  1  2  3  4  5  6  7  8  9 10 11 12    13    14    15    16    17    18
0  0  0  0  1  1  0  0  0  0  0  1  0  1     0     1     0     1     0     0
1  1  1  0  1  0  1  0  0  0  0  0  1  1     1     1  None  None  None  None
2  1  0  1  1  0  0  0  1  1  0  0  1  1     1     0     1     1     1  None
3  0  1  1  1  1  1  1  0  1  0  1  0  0  None  None  None  None  None  None
4  1  0  1  0  1  1  1  1  1  1  1  0  0     0     1     1  None  None  None

推荐阅读