我想创建一个名为total的新列,它将所有的year列相加(这些列中的所有内容都是整数),我想动态地做这件事,因为每年都会有一个新列(例如2024)。
在Python中,如何使用方法链和赋值运算符来实现这一点?
id name 2018 2019 2020 2021 2022 type
1 John 0 1 0 0 2 A
2 Bill 1 5 4 0 0 B
3 Tom 0 0 2 0 5 B
4 Mary 0 1 1 0 0 A
- 预期产出:**
id name 2018 2019 2020 2021 2022 type total
1 John 0 1 0 0 2 A 3
2 Bill 1 5 4 0 0 B 10
3 Tom 0 0 2 0 5 B 7
4 Mary 0 1 1 0 0 A 2
我有这个解决方案,但我不喜欢它,有没有更好的方式来编写这个代码?
- 临时解决方案:**
(
df
.assign(Total = lambda x: x['2018'] + x['2019'] + x['2020'] + x['2021'] x['2022'])
)
3条答案
按热度按时间bkhjykvo1#
假设只有year列具有int值,则只需执行
df['Total'] = df.sum(axis = 1)
:输出:
zz2j4svz2#
使用
DataFrame.loc
选择2018
和2022
之间的列:另一个方法是通过掩码过滤列名-此处转换为数字并测试列名是否更大,如
2000
:t1rydlwq3#
您可以将
assign
与filter
一起使用,并使用通用正则表达式表示4位数年份:或使用
drop
和要忽略的列:输出:
对列进行排序并更改所有整型列的类型:
输出: