我有一个 Dataframe ,我想在其中存储"原始" numpy.array
:
df['COL_ARRAY'] = df.apply(lambda r: np.array(do_something_with_r), axis=1)
但是pandas
似乎试图"解包" numpy.array。
是否有变通方案?除了使用 Package 器(见下面的编辑)?
我试过reduce=False
,没有成功。
- 编辑**
这是可行的,但是我必须使用'dummy' Data
类来 Package 数组,这并不令人满意,也不是很优雅。
class Data:
def __init__(self, v):
self.v = v
meas = pd.read_excel(DATA_FILE)
meas['DATA'] = meas.apply(
lambda r: Data(np.array(pd.read_csv(r['filename'])))),
axis=1
)
8条答案
按热度按时间3df52oht1#
在numpy数组周围使用 Package 器,即以list形式传递numpy数组
输出:
或者,您可以通过创建元组来使用
apply(np.array)
(如果您有 Dataframe输出:
一个三个三个一个
输出:
e0bqpujr2#
如果首先将列的类型设置为
object
,则可以插入不带任何换行的数组:输出:
7tofc5zh3#
可将数据框数据参数括在方括号中,以保持每个单元格中的
np.array
:cwdobuhd4#
假设您有一个DataFrame
ds
,并且它有一个名为“class”的列。如果ds
[“class”]包含字符串或数字,并且您希望将它们更改为numpy.ndarray
s或list
s,则以下代码将有所帮助。在代码中,class2vector
是numpy.ndarray
或list
,ds_class
是筛选条件。ds['class'] = ds['class'].map(lambda x: class2vector if (isinstance(x, str) and (x == ds_class)) else x)
drnojrws5#
chooseevalbuildin函数易于使用和阅读。
真实的商店展示完美的人类可读价值:
41ik7eoe6#
只需通过第一个
apply
将您想要存储在单元格中的内容 Package 到list
对象中,然后通过第二个apply
按list
的index 0
提取它:输出:
ax6ht2ek7#
下面是我的2美分贡献(在Python 3.7上测试):
qyswt5oh8#
如果你只想要其中的一些列,你可以这样做。以@allenyllee为例,
其输出
如果你需要一个特定的顺序,你也可以改变'a ',' b'的顺序。