gpt4 book ai didi

python - 如何为某些列添加没有值的行

转载 作者:太空宇宙 更新时间:2023-11-04 09:43:51 24 4
gpt4 key购买 nike

我使用的是 python 3.6.4 和 pandas 0.23.0。我已经为构造函数和追加引用了 pandas 0.23.0 文档。它没有提及任何关于不存在的值。我没有找到任何类似的例子。

考虑以下代码:

import pandas as pd

months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun",
"Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]

index_yrs = [2016, 2017, 2018]

r2016 = [26, 27, 25, 22, 20, 23, 22, 20, 20, 18, 18, 19]
r2017 = [20, 21, 18, 16, 15, 15, 15, 15, 13, 13, 14, 15]
r2018 = [16, 18, 18, 18, 17]

df = pd.DataFrame([r2016], columns = months, index = [index_yrs[0]])
df = df.append(pd.DataFrame([r2017], columns = months, index = [index_yrs[1]]))

现在如何添加只有到 5 月份的数据的 r2018?

最佳答案

我同意 RafaelC 的观点,即使用 NaN 填充缺失值的 2018 年数据列表是执行此操作的最佳方法。您可以使用 Numpy 中的 np.nan(您已经安装了 Pandas)来生成 NaN。

import pandas as pd
import numpy as np

months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun",
"Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]

index_yrs = [2016, 2017, 2018]

作为对您的代码的一个小改动,我将所有三年的数据都放入了一个 years 列表中,我们可以将其作为 pd.DataFrame 的 data 参数传递。这消除了将每一行附加到前面的行的需要。

r2016 = [26, 27, 25, 22, 20, 23, 22, 20, 20, 18, 18, 19]
r2017 = [20, 21, 18, 16, 15, 15, 15, 15, 13, 13, 14, 15]
r2018 = [16, 18, 18, 18, 17]
years = [r2016] + [r2017] + [r2018]

这是年份的样子:[[26, 27, 25, 22, 20, 23, 22, 20, 20, 18, 18, 19], [20, 21, 18, 16, 15, 15, 15, 15, 13, 13, 14, 15], [16, 18, 18, 18, 17]]。

至于用 NaN 填充你的 2018 年,像这样的东西可能会成功。我们只是确保如果一年只有前 n 个月的值,则其余月份将用 NaN 填充。

for year in years:
if len(year) < 12:
year.extend([np.nan] * (12 - len(year)))

最后,我们可以使用下面的一行而不是逐行附加来创建您的数据框。

df = pd.DataFrame(years, columns=months, index=index_yrs).astype(float)

输出:

      Jan   Feb   Mar   Apr   May   Jun   Jul   Aug   Sep   Oct   Nov   Dec
2016 26.0 27.0 25.0 22.0 20.0 23.0 22.0 20.0 20.0 18.0 18.0 19.0
2017 20.0 21.0 18.0 16.0 15.0 15.0 15.0 15.0 13.0 13.0 14.0 15.0
2018 16.0 18.0 18.0 18.0 17.0 NaN NaN NaN NaN NaN NaN NaN

您可能会注意到,我使用 .astype(float) 将数据框中值的 dtype 转换为 float。我这样做是为了使您的所有列都具有相同的数据类型。如果我们不调用 .astype(float),那么 Jan-May 将是 dtype int,而 Jun-Dec 将是 dtype float64

关于python - 如何为某些列添加没有值的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50546740/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com