python - 如何仅在 pandas 中将列数据添加到第一行或为新列条目提供默认数据?

标签 python pandas

不是确切的代码,而是简化的:

df['running_total'] = df.running_total.shift() + df['total']

显然,在第一个实例中 df.running_total.shift() 该条目不存在,因此会出错。

第一个条目有一个特殊的计算,所以我想明确地设置它。或者,每当无法找到上一行条目或 DNE 时,就使用该计算作为默认值。

两种解决方案都可以,更喜欢更快的解决方案(小数据集,不经常调用)。

最佳答案

您可以使用:

df = pd.DataFrame({'running_total':[4,5,np.nan, np.nan]})
print (df)
   running_total
0            4.0
1            5.0
2            NaN
3            NaN

print (df.running_total.shift())
0    NaN
1    4.0
2    5.0
3    NaN
Name: running_total, dtype: float64

一种可能的解决方案是 fillna - 但它取代了所有 NaNs

print (df.running_total.shift().fillna(0))
0    0.0
1    4.0
2    5.0
3    0.0
Name: running_total, dtype: float64

如果只想替换第一个值,则将其设置为 iat (ilocloc):

shifted = df.running_total.shift()
shifted.iat[0] = 0
print (shifted)
0    0.0
1    4.0
2    5.0
3    NaN
Name: running_total, dtype: float64

关于python - 如何仅在 pandas 中将列数据添加到第一行或为新列条目提供默认数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47008340/

相关文章:

python - 如何根据 xtick 标签控制条形图中特定列的颜色?

python - Pandas 滚动窗口和日期时间索引 : What does `offset` mean?

python - Seaborn/Matplotlib - 仅在 FacetGrid 中显示某些 X 值

python - 网页抓取成所需的 python 格式

python - 无法使用 Python 请求保存来自网站的 cookie?

python - 在 python 中计算逻辑回归

python - pandas DataFrame 多个子串匹配,还将一行的特定匹配子串放入新列

python - 根据元组中的值从列表中删除重复的元组

python lib检测模糊图像

python - 检查轮廓的任何点是否与一条线相交的有效方法是什么?