Sta*_*ser 11 python numpy pandas data-science
我有一个示例数据:
datetime col1 col2 col3
2021-04-10 01:00:00 25. 50. 50
2021-04-10 02:00:00. 25. 50. 50
2021-04-10 03:00:00. 25. 100. 50
2021-04-10 04:00:00 50. 50. 100
2021-04-10 05:00:00. 100. 100. 100
Run Code Online (Sandbox Code Playgroud)
我想创建一个名为 state 的新列,如果 col2 和 col3 值小于或等于 50,则返回 col1 值,否则返回 col1、column2 和 column3 之间的最大值。
预期输出如下图所示:
datetime col1 col2 col3. state
2021-04-10 01:00:00 25. 50. 50. 25
2021-04-10 02:00:00. 25. 50. 50. 25
2021-04-10 03:00:00. 25. 100. 50. 100
2021-04-10 04:00:00 50. 50. 100. 100
2021-04-10 05:00:00. 100. 100. 100. 100
Run Code Online (Sandbox Code Playgroud)
xss*_*han 18
为了改进其他答案,我将使用pandas apply迭代行并计算新列。
def calc_new_col(row):
if row['col2'] <= 50 & row['col3'] <= 50:
return row['col1']
else:
return max(row['col1'], row['col2'], row['col3'])
df["state"] = df.apply(calc_new_col, axis=1)
# axis=1 makes sure that function is applied to each row
print(df)
datetime col1 col2 col3 state
2021-04-10 01:00:00 25 50 50 25
2021-04-10 02:00:00 25 50 50 25
2021-04-10 03:00:00 25 100 50 100
2021-04-10 04:00:00 50 50 100 100
2021-04-10 05:00:00 100 100 100 100
Run Code Online (Sandbox Code Playgroud)
apply
帮助代码更清晰、更可重用。
归档时间: |
|
查看次数: |
30161 次 |
最近记录: |