python - 从没有 NaN 值的多列中的值创建数组
问题描述
我目前有一个如下所示的数据框:
col1 col2 col3
0 (10.213,-20.23) (120.1,-300.23) (111.0, -231.1)
1 (11.22,-22.33) (123.1,-302.23) (nan, nan)
2 (122.22,-22.44) (nan,nan) (nan, nan)
我正在尝试将所有集合添加到不同的列中,但不是 nan 集合。所以输出会是这样的:
col1
0 ((10.213,-20.23),(120.1,-300.23),(111.0, -231.1))
1 ((11.22,-22.33),(123.1,-302.23))
2 (122.22,-22.44)
请问有什么想法吗?
谢谢
解决方案
这是使用数据框的numpy
数组表示然后将列表列表分配给单个系列的一种方法。
棘手的部分是过滤掉NaN
元组;为此,我们可以使用filter
:
df = pd.DataFrame([[(10.213, -20.23), (120.1, -300.23), (111.0, -231.1)],
[(11.22, -22.33), (123.1, -302.23), (np.nan, np.nan)],
[(122.22, -22.44), (np.nan, np.nan), (np.nan, np.nan)]],
columns=['col1', 'col2', 'col3'])
res = pd.DataFrame({'col1': [list(filter(lambda x: any(pd.notnull(j) for j in x), i))
for i in df.values.tolist()]})
print(res)
col1
0 [(10.213, -20.23), (120.1, -300.23), (111.0, -...
1 [(11.22, -22.33), (123.1, -302.23)]
2 [(122.22, -22.44)]
推荐阅读
- android - 强制元素停留在约束边界内
- javascript - 由于相同的 id 无法访问第二张图片
- python - 在 pandas 中将许多职位相互分开
- docker - Docker 内部的 NAT
- javascript - 有没有办法将 discord.js 消息发送到特定频道?
- html - 字体真棒根本没有图标,试图用其他线程修复
- visual-studio-code - Visual Studio 中突出显示颜色扩展的问题
- java - 在 Java 中存储数据库密码(JDBC 连接字符串中需要)的最佳方法是什么?
- javascript - JS删除类显示无不起作用
- python - 如何使用 fmri 数据理解 sns.distplot 图表