使用/ Python Pandas进行电子表格操作

时间:2014-04-22 23:00:46

标签: python excel pandas spreadsheet data-manipulation

我给自己一个使用python和pandas进行数据处理的速成课程。我终于厌倦了使用电子表格并想要比R更灵活的东西,所以我决定给它一个旋转。它是一个非常光滑的界面,我正在玩它。但是,在研究不同的技巧时,我一直无法找到基本电子表格函数的备忘单,特别是在向引用其他列的数据框中的新列添加公式方面。

我想知道是否有人可能会给我推荐的代码来完成下面的6个标准电子表格操作,这样我就可以更好地了解它是如何工作的。如果您希望仅查看图像的完整尺寸渲染click here

Pandas spreadsheet example

如果您希望自己查看电子表格,click here

我已经稍微熟悉向数据框添加列,它主要是我正在努力解决的特定单元格的交叉引用。基本上,我期待答案松散地看起来像:

table['NewColumn']=(table['given_column']+magic-code-that-I-don't-know).astype(float-or-int-or-whatever)

如果我愿意使用额外的库来完成上述任何功能,请随时提出建议。

非常感谢提前。

1 个答案:

答案 0 :(得分:5)

通常,您希望考虑上的矢量化操作,而不是特定单元格上的操作。

因此,例如,如果您有一个data列,并且您希望另一列相同但每个值乘以3,则可以通过两种基本方式执行此操作。第一个是"逐个细胞"操作

df['data_prime'] = df['data'].apply(lambda x: 3*x)

第二种是矢量化方式:

df['data_prime'] = df['data'] * 3

因此,您的电子表格中的逐列:

计数(如果您希望从1开始而不是0,则可以在右侧添加1):

df['count'] = pandas.Series(range(len(df))

累计

df['running total'] = df['data'].cumsum()

与标量的区别(如果需要,将标量设置为df中的特定值):

df['diff'] = scalar - df['data']

移动平均值

df['moving average'] = df['running total'] / df['count'].astype('float')

电子表格中的基本公式

我认为你自己已经足够了。

如果声明

df['new column'] = 0
mask = df['data column'] >= 3
df.loc[mask, 'new column'] = 1