Pythonpandas; “excel”列操作

我对python相当陌生。 search以前的问题,我找不到这个问题的答案。

对于一个项目,我必须分析大量的.txt文件,并始终对其进行相同的计算。 创build一个数据框pandas被使用,这很好地工作。

我想要在其他列上执行计算的额外列,例如c = a + b。 对于简单的计算,这工作得很好:

In [41]: import pandas as pd In [42]: import numpy as np In [43]: df = pd.DataFrame(np.random.randn(10,2),columns=list('ab')) In [44]: df Out[45]: ab 0 0.163138 -1.261099 1 0.094772 -0.553349 2 -1.677519 -0.966680 3 1.732083 -1.118715 4 0.172240 -0.404648 5 0.270712 0.089841 6 0.589787 1.569790 7 0.822016 0.857993 8 -0.269941 0.586059 9 -0.152639 0.240438 In [46]: df["c"] = df["a"] + df["b"] In [47]: df Out[48]: abc 0 0.163138 -1.261099 -1.097961 1 0.094772 -0.553349 -0.458577 2 -1.677519 -0.966680 -2.644198 3 1.732083 -1.118715 0.613368 4 0.172240 -0.404648 -0.232407 5 0.270712 0.089841 0.360554 6 0.589787 1.569790 2.159576 7 0.822016 0.857993 1.680010 8 -0.269941 0.586059 0.316118 9 -0.152639 0.240438 0.087800 

遇到的问题发生在使用更复杂的计算时:

 # C1 and C2 are some constants needed for the calculations In [49]: C1 = 1.5 In [50]: C2 = 2.5 In [51]: df["c"] = df["a"] + [(C1 * df["a"]) + (C2 * df["b"] ** 2)] Exception: Data must be 1-dimensional 

有没有解决这个问题的方法? 还是我处理这个完全错误?

首先,错误在于你将内部计算结果放在方括号中,删除它可以修复错误:

 In [157]: df["c"] = df["a"] + (C1 * df["a"]) + (C2 * df["b"] ** 2) df Out[157]: abc 0 0.163138 -1.261099 4.383772 1 0.094772 -0.553349 1.002418 2 -1.677519 -0.966680 -1.857622 3 1.732083 -1.118715 7.459016 4 0.172240 -0.404648 0.839950 5 0.270712 0.089841 0.696959 6 0.589787 1.569790 7.635069 7 0.822016 0.857993 3.895420 8 -0.269941 0.586059 0.183810 9 -0.152639 0.240438 -0.237071 

问题是内部计算产生一个包含一个Series:

 In [159]: [(C1 * df["a"]) + (C2 * df["b"] ** 2)]​ Out[159]: [0 4.220634 1 0.907646 2 -0.180103 3 5.726933 4 0.667710 5 0.426247 6 7.045282 7 3.073404 8 0.453751 9 -0.084432 dtype: float64]  In [159]: [(C1 * df["a"]) + (C2 * df["b"] ** 2)]​ Out[159]: [0 4.220634 1 0.907646 2 -0.180103 3 5.726933 4 0.667710 5 0.426247 6 7.045282 7 3.073404 8 0.453751 9 -0.084432 dtype: float64] 

然后,您尝试添加其他列/系列,并不理解如何alignment