【问题标题】: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 值,这可能是问题吗?
  • 做的家伙,南是问题。感谢您的帮助

标签: python pandas dataframe loops append


【解决方案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)

【讨论】:

    猜你喜欢
    • 2022-08-16
    • 2021-06-06
    • 2022-01-17
    • 2021-12-20
    • 1970-01-01
    • 2019-10-12
    • 2018-10-24
    • 2019-05-24
    • 2021-11-23
    相关资源
    最近更新 更多