我给自己一个使用python和pandas进行数据处理的速成课程。我终于厌倦了使用电子表格并想要比R更灵活的东西,所以我决定给它一个旋转。它是一个非常光滑的界面,我正在玩它。但是,在研究不同的技巧时,我一直无法找到基本电子表格函数的备忘单,特别是在向引用其他列的数据框中的新列添加公式方面。
我想知道是否有人可能会给我推荐的代码来完成下面的6个标准电子表格操作,这样我就可以更好地了解它是如何工作的。如果您希望仅查看图像的完整尺寸渲染click here
如果您希望自己查看电子表格,click here。
我已经稍微熟悉向数据框添加列,它主要是我正在努力解决的特定单元格的交叉引用。基本上,我期待答案松散地看起来像:
table['NewColumn']=(table['given_column']+magic-code-that-I-don't-know).astype(float-or-int-or-whatever)
如果我愿意使用额外的库来完成上述任何功能,请随时提出建议。
非常感谢提前。
答案 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