有什么方法可以从 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)
我得到了以下形式的元组列表:
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)