【发布时间】:2021-06-28 08:40:57
【问题描述】:
使用 pandas 数据框假设我有类似结构的数据框如下:
import pandas as pd
a_choise = ["True", "False", "False", "False", "True", "False", "False", "True", "True"]
b_choise = ["True", "True", "False", "False", "False", "False", "True", "True", "True"]
c_choise = ["False", "False", "True", "False", "True", "True", "False", "True", "False"]
a_n = ["a1", "a2", "a3", "a4", "a5", "a6", "a7", "a8", "a9"]
b_n = ["b1", "b2", "b3", "b4", "b5", "b6", "b7", "b8", "b9"]
c_n = ["c1", "c2", "c3", "c4", "c5", "c6", "c7", "c8", "c9"]
df = pd.DataFrame(
{"a": list(range(1, 10)), "b": list(range(11, 20)), "c": range(21, 30),
"a_Cho":a_choise, "b_Cho":b_choise, "c_Cho":c_choise,
"a_n":a_n, "b_n":b_n, "c_n":c_n}
)
a b c a_Cho b_Cho c_Cho a_n b_n c_n
0 1 11 21 True True False a1 b1 c1
1 2 12 22 False True False a2 b2 c2
2 3 13 23 False False True a3 b3 c3
3 4 14 24 False False False a4 b4 c4
4 5 15 25 True False True a5 b5 c5
5 6 16 26 False False True a6 b6 c6
6 7 17 27 False True False a7 b7 c7
7 8 18 28 True True True a8 b8 c8
8 9 19 29 True True False a9 b9 c9
我想要一个满足以下条件的新 2 列(Choise、Value) 对于“a_Cho”、“b_Cho”和“c_Cho”中的所有值
- 如果 "a_Cho" = true then choise = "a_n", value = a 对应 "a_Cho" 的值 elif "a_Cho" = false 然后移到下一个
- 如果 "b_Cho" = true then choise = "b_n", value = b 对应 "b_Cho" 的值如果 "b_Cho" = false 然后移到下一个
- 如果 "c_Cho" = true then choise = "c_n", value = c 对应 "c_Cho" 的值如果 "c_Cho" = false 然后移到下一个
- 如果 "x_Cho" = false 那么 value 和 choise = "Invalide"
【问题讨论】:
-
df_val = [] df_name = [] cols = ["coln_present", "colm_present", ".... ] for x in df[cols]: if df1['coln_present'][df1 ['coln_present'] ==True]: df_val.append(df1.coln_val) df_name.append(df1.p1_coln_name) elif df1['colm_present'][df1['colm_present'] ==True]: df_val.append(df1 .colm_val) df_name.append(df1.p1_colm_name) else: df_val.append("Not_Valid") df_name.append("Not_Valid") ##
-
我在帖子中添加了一个示例代码
标签: python pandas dataframe pandas-loc