python - 在 pandas 中创建一系列参差不齐的列表时避免 VisibleDeprecationWarning
问题描述
我有一种方法应用于熊猫系列以生成两列,如下所示。返回的列之一包含不同大小的列表。这产生VisibleDeprecationWarning
. 我怎样才能避免这种情况?
我尝试了这个答案中显示的内容。但不能真正采用它来适应我这里的情况。
import pandas as pd
import numpy as np
def some_method(i):
return i, np.random.randint(10, size=i)
df = pd.DataFrame(np.random.randint(10, size=100), columns=["a"])
df["c"], df["d"] = zip(*df.a.apply(some_method))
解决方案
您可以生成Series
并分配给列列表:
def some_method(i):
return pd.Series([i, np.random.randint(10, size=i)])
df = pd.DataFrame(np.random.randint(10, size=100), columns=["a"])
df[["c", "d"]] = df.a.apply(some_method)
print (df)
a c d
0 2 2 [2, 5]
1 1 1 [2]
2 8 8 [2, 8, 2, 9, 1, 0, 9, 4]
3 9 9 [9, 0, 5, 6, 5, 0, 4, 9, 5]
4 8 8 [8, 7, 4, 6, 1, 7, 0, 0]
.. .. .. ...
95 7 7 [6, 4, 1, 5, 1, 5, 5]
96 0 0 []
97 9 9 [7, 1, 0, 6, 0, 8, 0, 6, 4]
98 8 8 [2, 0, 4, 2, 8, 9, 5, 7]
99 1 1 [6]
[100 rows x 3 columns]
或者DataFrame
如果性能很重要,则从函数生成的元组创建:
def some_method(i):
return i, np.random.randint(10, size=i)
df = pd.DataFrame(np.random.randint(10, size=100), columns=["a"])
df[["c", "d"]] = pd.DataFrame(df.a.apply(some_method).tolist())
推荐阅读
- python - 如何修复 python selenium 测试无法识别的 pac 文件?
- java - 文件时间到字符串
- javascript - 在 ubuntu OS(Mozilla Firefox 浏览器)中显示黑色背景的选择框下拉菜单
- .net - 表达式树和数据行
- android - 没有 Braintree 的本地移动设备中的 Paypal 结帐集成
- javascript - React、Redux、Thunk
- php - NGINX - PHP-FPM 多应用 K8s/Ingress
- c# - ASPNet Core 2.1 加载预编译视图的正确方法
- php - 如何从 Laravel 路由提供生成的 Vue 应用程序?
- android - 向 DialogFragment 添加关闭按钮