【发布时间】:2021-09-22 09:33:18
【问题描述】:
我正在尝试根据现有列在 pandas 数据框中创建一个新列。
| column1 | column2 | column3 | y1 | y2 | y3 |
|---|---|---|---|---|---|
| 100 | 200 | 300 | 2020 | 2021 | 2022 |
| 100 | 200 | 300 | 2021 | 2022 | 2023 |
| 100 | 200 | 300 | 2019 | 2020 | 2021 |
我想要一个新列 vals,如果 currentyear = y1 和 col2 如果 currentyear = y2,则它的值为 col1
| column1 | column2 | column3 | y1 | y2 | y3 | Vals |
|---|---|---|---|---|---|---|
| 100 | 200 | 300 | 2020 | 2021 | 2022 | 200 |
| 100 | 200 | 300 | 2021 | 2022 | 2023 | 100 |
| 100 | 200 | 300 | 2019 | 2020 | 2021 | 300 |
我正在尝试以下代码:
def assignvalues(df):
if df['y1'] == currentyear:
df['Vals'] = df['col1']
elif df['y2'] == currentyear:
df['Vals'] = df['col2']
elif df['y3'] == currentyear:
df['Vals'] = df['col3']
df.apply(assignvalues)
它确实创建列但不存储任何值。
【问题讨论】:
标签: python python-3.x pandas dataframe lambda