英文:
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)
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论