python - 如何将每一行数据框合并到python中的列表中
问题描述
我在python中有一个数据框
import pandas as pd
d = {'name':['a','b','c','d','e'],'location1': [1, 2,3,8,6], 'location2':
[2,1,4,6,8]}
df = pd.DataFrame(data=d)
df
如下:
name location1 location2
0 a 1 2
1 b 2 1
2 c 3 4
3 d 8 6
4 e 6 8
我尝试获取一个数据框:
name loc
0 a [1, 2]
1 b [2, 1]
2 c [3, 4]
3 d [8, 6]
4 e [6, 8]
如何有效地转换它?
解决方案
这里有一些建议。
列名和分配
# pandas >= 0.24
df['loc'] = df[['location1', 'location2']].to_numpy().tolist()
# pandas < 0.24
df['loc'] = df[['location1', 'location2']].values.tolist()
df
name location1 location2 loc
0 a 1 2 [1, 2]
1 b 2 1 [2, 1]
2 c 3 4 [3, 4]
3 d 8 6 [8, 6]
4 e 6 8 [6, 8]
使用 删除列drop
。
(df.drop(['location1', 'location2'], 1)
.assign(loc=df[['location1', 'location2']].to_numpy().tolist()))
name loc
0 a [1, 2]
1 b [2, 1]
2 c [3, 4]
3 d [8, 6]
4 e [6, 8]
zip
使用pop
列表理解
df['loc'] = [[x, y] for x, y in zip(df.pop('location1'), df.pop('location2'))]
# or
df['loc'] = [*map(list, zip(df.pop('location1'), df.pop('location2')))]
df
name loc
0 a [1, 2]
1 b [2, 1]
2 c [3, 4]
3 d [8, 6]
4 e [6, 8]
pop
破坏性地删除列,因此您可以在一个步骤中进行分配和清理。
推荐阅读
- tensorflow - 如何解决“没有算法工作”的 Keras 错误?
- haskell - 遍历 Haskell 中的 2 个列表
- javascript - 如何在 React 中检查函数或组件的返回值?
- python - Python 3.8 TLSv1.3 套接字关闭导致 ConnectionResetError 或 ConnectionAbortedError
- c# - WPF:尝试根据组合框中的选择更改可见性
- python - 删除日期时间值的一部分?
- ruby-on-rails - Rails 5.2.x,从 CDN 更新为 FontAwesome 套件 - 我需要向我的 CSP 添加什么以允许 css 和字体?
- javascript - 如何克服异步 useState 钩子?
- python - 将基于重复值的 Dataframe 拆分为多个 csv 文件
- javascript - Firebase:为什么在登录后调用`signOut()`?