将列添加到包含其他列值列表的 pandas DataFrame
Posted
技术标签:
【中文标题】将列添加到包含其他列值列表的 pandas DataFrame【英文标题】:Adding column to pandas DataFrame containing list of other columns' values 【发布时间】:2015-04-25 06:24:52 【问题描述】:我有一个需要添加一列的 DataFrame。该列需要是两个值的列表:
当前表:
lat long other_value
0 50 50 x
1 60 50 y
2 70 50 z
3 80 50 a
需要的表格:
lat long other_value new_column
0 50 50 x [50, 50]
1 60 50 y [60, 50]
2 70 50 z [70, 50]
3 80 50 a [80, 50]
我知道这非常简单,但文档似乎没有涵盖这一点(至少显然没有)。
【问题讨论】:
【参考方案1】:一种方法是使用tolist()
:
>>> df['new_column'] = df[['lat', 'long']].values.tolist()
>>> df
lat long other_value new_column
0 50 50 x [50, 50]
1 60 50 y [60, 50]
2 70 50 z [70, 50]
3 80 50 a [80, 50]
不过,总的来说,我会非常谨慎地在 DataFrame 中使用列表,因为它们更难以在列中进行操作,而且您无法获得整数/浮点数带来的许多性能优势。
【讨论】:
我想知道数据框中的列表。有关为什么您无法检查 df 中的位置是否为空列表的任何信息? 我更新了我的问题以包含一个额外的列。这就是 .values 不起作用的原因。也就是说,除非我可以说 .values 并指定要使用的列。你认为我可以这样做吗? @LiamFoley:我不敢说实话。我希望 Pandas 开发人员从来没有真正考虑过 df 值的列表(或其他 Python 数据结构),因此它们并不真正受到支持。也许这将在未来的版本中改变。与此同时,一些str
方法可以在列表中正常工作,例如df['new_column'].str.len() == 0
将检查列表是否为空。
另外,如果您需要单独访问列,我相信列表会转换为 numpy 数组对象。 (虽然不是 100% 确定)【参考方案2】:
你可以使用 zip
df['new_column'] = list(zip(df.lat, df.long))
【讨论】:
以上是关于将列添加到包含其他列值列表的 pandas DataFrame的主要内容,如果未能解决你的问题,请参考以下文章