我在一列中有pandas dataframe类型,其字符串类型如下:
commits
0 12, 12, 9, 71, 145, 326, 315
1 54, 23, 265, 160, 164, 142
2 1, 335
3 6, 3, 21, 873
...
数据类型如下:
df.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 238089 entries, 0 to 238088
Data columns (total 1 columns):
commits 238089 non-null object
dtypes: object(1)
memory usage: 1.8+ MB
我想把它撒进整数类型的单独列中,像这样:
0 1 2 3 4 5 6
0 12 12 9 71 145 326 315
1 54 23 265 160 164 142
2 1 335
3 6 3 21 873
...
也就是说,每个数字现在都是整数。每行的顺序均不得更改。
在原始数据集中,每一行都有不同的数字长度。溢出的行是否也可以保持不同的行长?也就是说,空值不占Nan或None。
如果没有None或Nan不可能溢出,那么最简单的编程方法是什么?
新数据集可以是numpy或数据框类型。
如何在python中编写代码?谢谢。
答案 0 :(得分:0)
您可以这样做:
import numpy as np
import pandas as pd
data = ['12, 12, 9, 71, 145, 326, 315',
'54, 23, 265, 160, 164, 142',
'1, 335',
'6, 3, 21, 873']
df = pd.DataFrame(data=data, columns=['commits'])
result = pd.DataFrame([np.array(row) for row in df.commits.str.split(', ')]).fillna('')
print(result)
输出
0 1 2 3 4 5 6
0 12 12 9 71 145 326 315
1 54 23 265 160 164 142
2 1 335
3 6 3 21 873
技巧 是将每个列表转换为numpy数组,以便pd.Dataframe修复锯齿状的数组,然后使用fillna替换NaN值与空的空间。
答案 1 :(得分:0)
将str.split
与expand=True
一起使用:
df.commits.str.split(', ', expand=True).fillna('')
0 1 2 3 4 5 6
0 12 12 9 71 145 326 315
1 54 23 265 160 164 142
2 1 335
3 6 3 21 873
由于缺少数据,因此不可能所有列都为整数DataType。最接近的是将列为float
,将缺失值表示为NaN
。