如何从DataFrame创建整数列表?

时间:2016-10-25 12:48:16

标签: python list pandas dataframe

我有数据框:

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]]

我该怎么做?

2 个答案:

答案 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_numericstack使用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]]