熊猫在时间序列上向数据框添加列

菲利普·豪梅瑟(Philippe Haumesser)

我已经完成了数据帧聚合,我想添加一个新列,如果到2020年该行中的值> 0,则它将放置1,否则为0。

这是我的代码和数据帧头

df['year'] = pd.DatetimeIndex(df['TxnDate']).year # add column year
df['client'] = df['Customer'].str.split(' ').str[:3].str.join(' ') # add colum with 3 first word

Datedebut = df['year'].min()
Datefin = df['year'].max()
#print(df)

df1 = df.groupby(['client','year']).agg({'Amount': ['sum']}).unstack()
print(df1)
df1['nb2020']= np.where( df1['year']==2020, 1, 0)

数据框df1在最后一行之前打印是这样的: 在此处输入图片说明

最后一行错误是:KeyError:'year'

谢谢

哈扎诺利

当您执行聚合和未堆叠(df.groupby(['client','year']).agg({'Amount': ['sum']}).unstack())时,该列的值year已扩展为列,并且这些列是MultiIndex。您可以通过以下方式查看:

print (df1.columns)

然后可以选择它们。

使用MultiIndex列

因此,要选择与2020相匹配的列,您可以使用:

df1.loc[:,df1.columns.get_level_values(2).isin({2020})

您可能可以获取正确的列,然后使用以下命令检查2020是否具有非零值:

df1['nb2020'] = df1.loc[:,df1.columns.get_level_values('year').isin({2020})] > 0

如果您想要1和0(而不是布尔类型),则可以转换为int(使用astype)。

重命名列

如果您认为这有点复杂,则可能还希望将列更改为单个索引。使用类似

df1.columns = df1.columns.get_level_values('year')

要么

df1.columns = df1.columns.get_level_values(2)

接着

df1['nb2020'] = (df1[2020] > 0).astype(int)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

熊猫,简单地向数据框的日期时间列添加一个月

来自分类Dev

如何向熊猫数据框列添加小时

来自分类常见问题

熊猫-从字典向数据框添加新列

来自分类Dev

从功能向熊猫数据框中添加多列

来自分类Dev

从字典向熊猫数据框添加新列

来自分类Dev

如何向熊猫数据框添加列级别

来自分类Dev

时间序列的分割熊猫数据框

来自分类Dev

向熊猫数据框添加方法

来自分类Dev

向熊猫数据框添加空值

来自分类Dev

向数据框熊猫添加行

来自分类Dev

在熊猫中向数据框添加行

来自分类Dev

熊猫-向数据框添加序列会导致出现NaN值

来自分类Dev

熊猫-向数据框添加序列会导致出现NaN值

来自分类Dev

向数据框添加列

来自分类Dev

如何根据特定条件在数据框熊猫中的列上添加一列

来自分类Dev

根据另一个数据框向熊猫数据框列添加值

来自分类Dev

使用熊猫基于另一个数据框向数据框添加列

来自分类Dev

在python熊猫数据框中添加时间序列强度的廉价方法

来自分类Dev

根据其他列的值向熊猫数据框添加新列

来自分类Dev

熊猫:向数据框添加新列,这是索引列的副本

来自分类Dev

根据其他列向熊猫数据框添加一列

来自分类Dev

在熊猫的一列上重塑数据框

来自分类Dev

如何一次在熊猫中向数据框编辑/添加两列-df.apply()

来自分类Dev

计算熊猫时间序列上的每日事件

来自分类Dev

根据另一个数据框的内容向熊猫数据框添加一列

来自分类Dev

在熊猫时间序列数据框中删除重复项

来自分类Dev

如何使用索引属性转换时间序列熊猫数据框?

来自分类Dev

如何精美绘制时间序列的分割(熊猫数据框)

来自分类Dev

向R中的数据框添加列

Related 相关文章

热门标签

归档