我有一个示例数据:
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) 我有一本字典,如下所示:
x = {
"Student": [
{
"tags": {
"name": "Alex",
"class": "Biology",
"gender": "male",
},
"Nationality": "",
"Test Score": 10.0,
"Exam Score": 70.0,
},
{
"tags": {
"id": "A123",
"height": "170",
"age": "15",
},
"Nationality": "",
"Test Score": 20.0,
"Exam Score": 80.0,
},
],
}
Run Code Online (Sandbox Code Playgroud)
我想获得上面数据模式的测试分数和考试分数,其中有一个带有键“标签”的嵌套字典,键是“id”、“height”和“age”
所以期望值应该是 "Test Score"=20.0 and "Exam Score"=80.0
我已经尝试了以下实现,但它似乎只检查“学生”列表(长度为 2)中的第一个值,但我需要它来检查列表中的所有项目(在本例中为两个项目)。
search_tag = ["id", "height", "age"]
val_list = []
if all([t in search_tag for t in x["Student"][0]["tags"].keys()]):
val_list.append(x["Student"][0]["Test Score"])
val_list.append(x["Student"][0]["Exam Score"])
Run Code Online (Sandbox Code Playgroud)