我有数据框:
Values Values2
1,2,3,4 0,2,3
2,1,0,6 0,0,0
9,8,7,6 1,0,1
我想创建列表列表。我是按照以下方式做到的:
df[['Values']].values.tolist()
在输出中获取:
[['1,2,3,4'],
['2,1,0,6'],
['9,8,7,6']]
这是一个字符串,但我需要一个像这样的整数列表:
[[1,2,3,4],
[2,1,0,6],
[9,8,7,6]]
我该怎么做?
答案 0 :(得分:7)
它们似乎存储为字符串。尝试以下(不是非常强大,但根据您的上下文,它可以没问题):
slist = df[['Values']].values.tolist()
ilist = [ [int(s) for s in l[0].split(',')] for l in slist]
答案 1 :(得分:3)
您可以使用str.split
在逗号上拆分字符串,expand=True
这会将每个值分隔到它自己的列中,然后您可以将类型转换为int
然后获取列表中的值根据需要:
In [109]:
df['Values'].str.split(',',expand=True).astype(int).values.tolist()
Out[109]:
[[1, 2, 3, 4], [2, 1, 0, 6], [9, 8, 7, 6]]
打破这个局面:
In [110]:
df['Values'].str.split(',',expand=True)
Out[110]:
0 1 2 3
0 1 2 3 4
1 2 1 0 6
2 9 8 7 6
In [111]:
df['Values'].str.split(',',expand=True).astype(int).info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 3 entries, 0 to 2
Data columns (total 4 columns):
0 3 non-null int32
1 3 non-null int32
2 3 non-null int32
3 3 non-null int32
dtypes: int32(4)
memory usage: 128.0 bytes
要处理NaN/None
值,请to_numeric
和stack
使用unstack
:
In [114]:
pd.to_numeric(df['Values'].str.split(',',expand=True).stack(), errors='coerce').unstack().values.tolist()
Out[114]:
[[1, 2, 3, 4], [2, 1, 0, 6], [9, 8, 7, 6]]