使用列中的值来更新数据框中的其他值。

huangapple go评论59阅读模式
英文:

Using values in a column to update other values in a dataframe

问题

以下是要翻译的内容:

我有以下的数据框:

| 国家| 年份变绿| 2020|2021|2022|2023|2024|2025|2026|2027|2028|2029|2030|
| -------- | -------------- |
| 德国 | 2024 | 1085|1120|1000|1000|1000|1000|1000|1000|1000|1000|1000|
| 法国 | 2026 | 1230|1845|1600|1600|1600|1600|1600|1600|1600|1600|1600|
| 巴西 | 2026 | 1115|1090|1350|1350|1350|1350|1350|1350|1350|1350|1350|
| 意大利 | 2028 | 1455|1720|1630|1630|1630|1630|1630|1630|1630|1630|1630|
| 澳大利亚| 2023 | 1095|1360|1285|1285|1285|1285|1285|1285|1285|1285|1285|

我需要获取每个国家变绿的年份,并将该年份之后的值更新为0。例如,德国在2024年变绿,所以从2024年开始德国的所有值都将变为0。

什么是最有效的方法来做到这一点?

我无法弄清楚最快的方法。

谢谢!

英文:

I have the below dataframe

| Country| Year turns green| 2020|2021|2022|2023|2024|2025|2026|2027|2028|2029|2030|
| -------- | -------------- |
| Germany | 2024 | 1085|1120|1000|1000|1000|1000|1000|1000|1000|1000|1000|
| France | 2026 | 1230|1845|1600|1600|1600|1600|1600|1600|1600|1600|1600|
| Brazil | 2026 | 1115|1090|1350|1350|1350|1350|1350|1350|1350|1350|1350|
| Italy | 2028 | 1455|1720|1630|1630|1630|1630|1630|1630|1630|1630|1630|
| Australia| 2023 | 1095|1360|1285|1285|1285|1285|1285|1285|1285|1285|1285|

I need to take the year that each country turns green and update the value to 0 from that year onwards. E.g. Germany turns green in 2024 so all values from 2024 onwards for Germany will be 0.

What is the most efficient way of doing this?

I can not figure out the fastest way to do this.

Thanks!

答案1

得分: 1

尝试这个:

def zero_turns_green_func(row):
    year_turns_green = row.loc['Year turns green']
    row.loc[year_turns_green :] = 0
    return row
df.apply(zero_turns_green_func, axis = 1)
英文:

Try this:

def zero_turns_green_func(row):
    year_turns_green = row.loc['Year turns green']
    row.loc[year_turns_green :] = 0
    return row
df.apply(zero_turns_green_func, axis = 1)

huangapple
  • 本文由 发表于 2023年4月13日 22:22:03
  • 转载请务必保留本文链接:https://go.coder-hub.com/76006562.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定