有什么方法可以从 pandas 中的一列浮点数创建一列元组?

Any way to create a column of tuples from a column of floats in pandas?

我得到了以下形式的元组列表:

ls = [(14, 6, 1.5), (14, 7, 1.5), (14, 8, 1.5), (14, 9, 1.5), (14, 10, 1.5), (14, 11, 1.5), (14, 12, 1.5), ..., (14, 13, 1.5), (14, 14, 1.5), (14, 15, 1.5)]

有一个 pandas DataFrame,其中一列 data['ind'] 是对应于上述列表索引的整数。 现在我想创建一个新列,其中包含与同一行的索引列条目对应的元组。我是这样做的:

data['ls'] = data['ind'].apply(lambda x: ls[x])

但我收到以下错误:

ValueError: setting an array element with a sequence.

有什么办法可以解决这个错误吗?如果列表包含浮点数或整数而不是元组,则代码可以完美运行...

我会先从你的元组列表中创建一个 Series

LS = pd.Series(ls)

然后调用map:

data['ls'] = data['ind'].map(LS)

使用列表示例:

ls = [(14, 6, 1.5), (14, 7, 1.5), (14, 8, 1.5), (14, 9, 1.5), (14, 10, 1.5), (14, 11, 1.5), (14, 12, 1.5)]

还有这个:

data = pd.DataFrame({'ind':[0,2,3]})

执行查找导致:

In [10]: LS = pd.Series(ls)

In [11]: LS
Out[11]: 
0     (14, 6, 1.5)
1     (14, 7, 1.5)
2     (14, 8, 1.5)
3     (14, 9, 1.5)
4    (14, 10, 1.5)
5    (14, 11, 1.5)
6    (14, 12, 1.5)
dtype: object

In [12]: data['ls'] = data['ind'].map(LS)

In [13]: data
Out[13]: 
   ind            ls
0    0  (14, 6, 1.5)
1    2  (14, 8, 1.5)
2    3  (14, 9, 1.5)

您可以从 ls 创建数据框并将其合并到您的数据中。

data.merge(pd.DataFrame(ls, columns['ls']), left_on='ind', right_index=True)