如何在数据框列中附加值
Posted
技术标签:
【中文标题】如何在数据框列中附加值【英文标题】:how to append value in a dataframe column 【发布时间】:2021-07-07 02:47:59 【问题描述】:我正试图了解我的投资随着时间的推移而发展,但我遇到了一个问题。当我尝试循环初始值 x 变化时,我得到一个完整的 NaN 列
这是代码
value = 1000
total = []
for variation in df["Variation"]:
value = value * variation
total.append(value)
我尝试了相同的算法并成功了
list=[1,2,3,4,5]
a = 2
results = []
for x in list:
a = a * x
results.append(a)
错在哪里?
【问题讨论】:
您是否要附加完整的变体列?如果在循环中打印变体会发生什么? 您是否尝试遍历 df["Variation"] 中的所有值。您可能需要将 df["Variation"] 转换为列表,然后运行循环 我已经将变体转换为列表并且列表打印完美,当我使时间值仍然不起作用时萌芽。我意识到变异列的第一项是 nan 值,这可能是问题吗? 做的家伙,南是问题。感谢您的帮助 【参考方案1】:而不是循环,更类似于熊猫的方法是cumprod()
:
df = pd.DataFrame('Variation': [1, 2, 3, 4, 5])
value = 2
total = df.Variation.cumprod() * value
# 0 2
# 1 4
# 2 12
# 3 48
# 4 240
# Name: Variation, dtype: int64
根据nan
cmets,请注意cumprod()
也可以无缝处理nan
:
df = pd.DataFrame('Variation': [np.nan, 2, 3, 4, 5])
value = 2
total = df.Variation.cumprod() * value
# 0 NaN
# 1 4.0
# 2 12.0
# 3 48.0
# 4 240.0
# Name: Variation, dtype: float64
【讨论】:
这比涉及for
循环的其他答案非常好,而且效率更高。 +1【参考方案2】:
应该这样做
for variation in df["Variation"].tolist():
value = value * variation
total.append(value)
【讨论】:
以上是关于如何在数据框列中附加值的主要内容,如果未能解决你的问题,请参考以下文章