Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
蟒蛇熊猫&引用;excel";列操作_Excel_Python 3.x_Pandas_Calculated Columns - Fatal编程技术网

蟒蛇熊猫&引用;excel";列操作

蟒蛇熊猫&引用;excel";列操作,excel,python-3.x,pandas,calculated-columns,Excel,Python 3.x,Pandas,Calculated Columns,我对python还很陌生。搜索以前的问题,我找不到这个问题的答案 对于一个项目,我必须分析大量的.txt文件,并始终对其执行相同的计算。为了创建一个数据帧,使用了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),col

我对python还很陌生。搜索以前的问题,我找不到这个问题的答案

对于一个项目,我必须分析大量的.txt文件,并始终对其执行相同的计算。为了创建一个数据帧,使用了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]: 
      a         b
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]: 
      a         b         c
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]:
          a         b         c
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
问题在于,内部计算会生成一个包含以下序列的列表:

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]

然后尝试添加其他列/系列,但它不知道如何对齐

谢谢,删除括号效果很好!事实上,我只是想把df[“b”]**2的结果乘以常数C2,这样这个部分就已经可以了