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 之间的语法逻辑的主要内容,如果未能解决你的问题,请参考以下文章
《Python数据分析常用手册》一NumPy和Pandas篇
为啥 32 位和 64 位 numpy/pandas 之间存在差异