【问题标题】:Is it possible to convert a numpy array of strings to a pandas dataframe inplace?是否可以将一个 numpy 字符串数组就地转换为 pandas 数据框?
【发布时间】:2015-10-24 14:38:38
【问题描述】:

如您所见,数组已被复制。

import pandas as pd
import numpy as np
foo = np.array([['a', 'b'],['c', 'd']],dtype='U32')
df_foo = pd.DataFrame(data=foo, copy=False)
foo[0,0]='different'
print(df_foo.values)

返回

[['a' 'b']
 ['c' 'd']]

此外,foo 具有 dtype='<U32',而 df_foo.values 具有 dtype=object。我不需要解决问题的方法,我更好奇是否有可能,如果没有,为什么不呢?

【问题讨论】:

  • 我不认为这是可能的,尽管 Jeff 已经讨论了 0.17.0 中即将推出的功能,我认为这与stackoverflow.com/questions/31132784/… 非常相似
  • 即使没有副本,这也是不可能的 - 字符串表示为对象 dtype,因此它们在转换时被复制。如果你从 object dtype 开始,它将是 view (iow 你正在尝试的东西会起作用)。但是它们在对象类型方面存在许多奇怪的问题,因此在您进行操作时无法保证,并且在很多情况下您可能会失去视图。
  • 有道理。非常感谢:)

标签: python numpy pandas


【解决方案1】:

是的,只需删除 copy=False 就不会是副本。所以只需替换

df_foo = pd.DataFrame(data=foo, copy=False)

df_foo = pd.DataFrame(data=foo)

它对我有用。

【讨论】:

  • 你确定吗?对不起,但这对我来说没有意义。尝试用你所说的运行我的代码,看看你是否在第一个单元格中打印出“不同”。我也认为这个问题是由@Jeff 在 cmets 中回答的。如果他的回复被发布为答案,我会将其标记为答案。
猜你喜欢
  • 1970-01-01
  • 2020-06-20
  • 1970-01-01
  • 1970-01-01
  • 2022-01-12
  • 2013-05-05
  • 1970-01-01
  • 2014-03-23
相关资源
最近更新 更多