Pandas 和 numpy 之间的语法逻辑

Posted

技术标签:

【中文标题】Pandas 和 numpy 之间的语法逻辑【英文标题】:Syntax logic between Pandas and numpy 【发布时间】:2021-11-24 11:51:40 【问题描述】:

我有一个关于 numpy 和 Pandas 的语法问题,可能还有更多 Python 模块。要在 numpy 中有效可以这样做:

b = np.ones((5,5))
b[1:-1, 1:-1] = 0
print(b)

但是,当我想用​​ Pandas 在 Dataframe 上做某事时,我使用了一个变量,否则它不起作用,就像这样:

df2 = pd.concat(out, ignore_index=True, axis=1)
df2 = df2.fillna(method='ffill')

以 df.to_csv 为例。我不明白为什么 Python 的模块不使用类似的语法。我错过了什么吗?

【问题讨论】:

您正在比较不同的操作。您所指的熊猫操作使事情变得明确; numpy 中的第一个操作是索引,这是有道理的。如果要进行比较,请寻找类似的过程进行比较 你说得对,我现在明白了一点,谢谢 您也可以将就地索引分配与列表一起使用;和dict。但是大多数 numpy 函数和方法都会返回新数组。 np.concatenate([arr1, arr2]); arr.reshape(3,4)。就地更改 pandas 列的值,添加列 df['newcol'] = np.arrange(10) 也是如此。 【参考方案1】:

它确实有效,只是它不是 pandas 的默认设置。你必须这样做:

df2.fillna(method='ffill', inplace=True)

可能这不是默认值,因为它不会像这样嵌套操作:

df2 = pd.concat(out, ignore_index=True, axis=1).fillna(method='ffill').replace(...).apply(...)

Pandas 实际上使用 numpy 数组。你可以像这样访问它们

df.values

或者这个

df["column"].values

【讨论】:

“inplace=True”是否让它工作?我以前不知道 Pandas 使用 numpy 数组,谢谢! 是的,它适用于 inplace=True,只是不要执行df2 = df2.fillna(method='ffill', inplace=True),因为该函数将返回 None。此外,如果这回答了您的问题,您可以单击复选标记接受此答案

以上是关于Pandas 和 numpy 之间的语法逻辑的主要内容,如果未能解决你的问题,请参考以下文章

4numpy+pandas速查手册

《Python数据分析常用手册》一NumPy和Pandas篇

《Python数据分析常用手册》NumPy和Pandas篇

为啥 32 位和 64 位 numpy/pandas 之间存在差异

是否有关于 scipy、numpy、pandas、scikit 生态系统中包之间相互依赖关系的文档? Python

pandas 和 numpy 的意思不同