首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将Python Dataframe列与固定变量相乘

将Python Dataframe列与固定变量相乘
EN

Stack Overflow用户
提问于 2019-09-01 12:48:49
回答 1查看 33关注 0票数 0

我可以用一个常量减去一个Dataframe列。示例:

代码语言:javascript
运行
复制
snp_sum = snp['Adj Close'] - 10

但是,一旦我将常量替换为变量snp_30Y,它就不起作用了

代码语言:javascript
运行
复制
snp_30Y = ((snp_t1-snp_t0)/snp_t0)
snp_30Y = snp_30Y.values 
snp_sum = snp['Adj Close'] - snp_30Y

我得到的结果是ValueError: Length of passed values is 1, index implies 360

结果应该与我将变量定义为像10这样的常量一样。

代码语言:javascript
运行
复制
snp_sum = snp['Adj Close'] - 10

结果:

代码语言:javascript
运行
复制
0       267.720001
1       287.470001
2       278.859985
3       284.869995
4       299.640015
EN

回答 1

Stack Overflow用户

发布于 2019-09-01 14:41:47

正如wjandrea指出的,您的示例不是reproducible。此外,标题与示例不匹配:您提到了乘法,而示例显示了一些减法。

因此,这里是一些一般性的答案,但如果您希望获得更具体的问题,请更新您的问题。

您可以对两个数据框列进行操作(乘法、减法等)。但前提是它们具有相同的维度。您可以使用<col>.shapelen(<col>)检查该尺寸。

还要注意,在pandas中,您应该了解几种类型:完整的数据帧是一个Dataframe,而单个列是一个Series。这些对象是名为array的更低级、更高效的numpy对象的包装器。您可以使用<col_or_df>.values访问这些较低级别的对象。支持SeriesSeries之间以及Seriesarray之间的操作。这就是为什么你有两种方法来实现你所要求的:

代码语言:javascript
运行
复制
import pandas as pd

# data
df = pd.DataFrame({'a': [0, 10, 20],
                   'b': [1, 11, 21]})

# subtracting a constant
df_cst = df['a'] - 1
print("df_cst (type subtracted: %s)" % type(1))
print(df_cst)
print()

# subtracting a column (= a Series)
df_var = df['a'] - df['b']
print("df_var (type subtracted: %s)" % type(df['b']))
print(df_var)
print()

# subtracting a column values (= a numpy array)
df_var2 = df['a'] - df['b'].values
print("df_var2 (type subtracted: %s)" % type(df['b'].values))
print(df_var2)

收益率

代码语言:javascript
运行
复制
df_cst (type subtracted: <class 'int'>)
0    -1
1     9
2    19
Name: a, dtype: int64

df_var (type subtracted: <class 'pandas.core.series.Series'>)
0   -1
1   -1
2   -1
dtype: int64

df_var2 (type subtracted: <class 'numpy.ndarray'>)
0   -1
1   -1
2   -1
Name: a, dtype: int64

正如您所看到的,当减法中的两个变量中只有一个是dataframe列(一个Series)时,结果将传递其名称。当第二个项目也是Series时,该名称将丢失,因为熊猫无法知道使用哪个名称来表示结果。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57743269

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档