pandas - 如何将仅包含数字的数据框中的列拆分为熊猫中的多列
问题描述
我有一个包含以下数据的 .dat 文件:
0001100000101010100
110101000001111
101100011001110111
0111111010100
1010111111100011
需要计算每行中零和一的数量
我试过熊猫。
- Step-1:读取数据文件
- 步骤 2:给定列名
- 步骤 3:尝试将值拆分为多列。但未能成功
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 将数据框拆分为多列。
最大列数将等于数据框中任何行中的最大零和一。
解决方案
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
推荐阅读
- javascript - 如何在 Reactjs 中每两周进行一次 Google Calendar API 事件?
- jquery - 在 Bootstrap 中传递值
- spring - 使用 spring-boot-starter-log4j2 通过环境动态设置日志级别信息到 log4j
- python - 为什么这个 python 列表不在循环中分配它的值?
- reactjs - 反应如何通过数据映射以显示样式组件道具的图像?
- c# - LINQ 选择列表中的所有孤儿
- nginx - nginx 401 问题背后的 JForg Artifactory 7.x
- ios - Swift API URLSession 不会将字符串附加到我的本地字符串数组
- awk - 替换字符串并在同一字段的某个位置插入一个字符
- operating-system - 内存访问安全实现问题