def chazhao(x): A=df1[x] list(A) for s in list(A): if 'Remote' in s: return 1 else: return 0 print(s) df1['chazhao']=chazhao('location')返回值全是1
时间: 2024-02-14 12:06:10 浏览: 58
根据你提供的代码,很可能是因为在循环遍历`list(A)`时,当第一个元素不包含`Remote`时,就直接返回了0,导致后面的元素没有被遍历到。可以将`return 0`移动到循环遍历结束后再执行。另外,`print(s)`语句也应该移动到循环内部,以便查看每个元素的值。修改后的代码如下:
```
def chazhao(x):
A = df1[x]
for s in list(A):
print(s)
if 'Remote' in s:
return 1
return 0
df1['chazhao'] = chazhao('location')
```
这样就可以查看每个元素的值,并且返回值也应该是正确的了。
相关问题
df1['chazhao'] = df1['location'].apply(lambda x: 'Remote' in x) A=df1['salary'][df1['chazhao']==True] B=df1['salary'][df1['chazhao']==False] result = pd.merge(A, B, left_index=True, right_index=True)df1['chazhao'] = df1['location'].apply(lambda x: 'Remote' in x) A=df1['salary'][df1['chazhao']==True] B=df1['salary'][df1['chazhao']==False] result = pd.merge(A, B, left_index=True, right_index=True)返回列表没有数值
这段代码主要是针对数据框df1中的位置列(location)的处理,将位置列中包含'Remote'字符串的行标记为True,不包含的行标记为False,然后将该标记列和薪资列(salary)分别赋值给A和B。接着,使用pd.merge函数将A和B两个数据框按行标索引进行合并,生成新的数据框result。由于代码没有完整输出结果,无法判断出现问题的具体位置,建议检查代码输入是否正确并检查数据框df1中的数据是否满足预期,例如位置列中是否有'Remote'字符串。
struct chexinxi *chazhao(struct chexinxi *head) { char chexinghao[N]; char chepaihao[N]; char chexinghao1[N]; char chepaihao1[N]; int n,m; struct chexinxi *p; p=head; printf("\t\t\t\t请选择查找方式(1.车型号,2.车牌号):"); scanf("%d",&n); if(n==1) { printf("\t\t\t\t请输入车型号:"); scanf("%s",chexinghao); while(p!=NULL) { if(strcmp(chexinghao,p->chexinghao)==0) { printf("\t\t\t\t车型号:%s 车牌号:%s\n",p->chexinghao,p->chepaihao); printf("\t\t\t\t是否进行修改(1.是,2.否):"); scanf("%d",&m); if(m==1) { printf("\t\t\t\t车型号:"); scanf("%s",&chexinghao1); strcpy(p->chexinghao,chexinghao1); printf("\t\t\t\t车牌号:"); scanf("%s",&chepaihao1); strcpy(p->chepaihao,chepaihao1); } break; } p=p->next; } if(p==NULL) { printf("\t\t\t\t未找到该车型号的车辆信息!\n"); } } else if(n==2) { printf("\t\t\t\t请输入车编号:"); scanf("%s",chepaihao); while(p!=NULL) { if(strcmp(chepaihao,p->chepaihao)==0) { printf("\t\t\t\t车型号:%s 车牌号:%s\n",p->chexinghao,p->chepaihao); break; } } if(p==NULL) printf("\t\t\t\t未找到该车牌号的车辆信息!\n"); } return head; }优化查找文件内容
可以对该函数进行优化,提高其执行效率和代码质量。具体优化方法如下:
1. 减少重复输入。可以在函数开始时,先让用户选择查找方式,并根据不同的查找方式提示用户输入相应的信息,以避免用户重复输入信息。
2. 使用指针传参。可以将链表的头指针作为参数传入函数中,以便函数能够修改链表节点的值。
3. 简化逻辑结构。可以将两种查找方式分别写成两个函数,以减少函数的复杂度。
4. 增加错误处理机制。可以在函数中加入错误处理机制,以便在出现错误时能够及时提示用户并退出函数。
优化后的代码如下:
```
struct chexinxi* chaxun_chexinghao(struct chexinxi* head) {
char chexinghao[N];
char chexinghao1[N];
char chepaihao[N];
char chepaihao1[N];
int m;
printf("\t\t\t\t请输入车型号:");
scanf("%s", chexinghao);
struct chexinxi* p = head;
while (p != NULL) {
if (strcmp(chexinghao, p->chexinghao) == 0) {
printf("\t\t\t\t车型号:%s 车牌号:%s\n", p->chexinghao, p->chepaihao);
printf("\t\t\t\t是否进行修改(1.是,2.否):");
scanf("%d", &m);
if (m == 1) {
printf("\t\t\t\t车型号:");
scanf("%s", &chexinghao1);
strcpy(p->chexinghao, chexinghao1);
printf("\t\t\t\t车牌号:");
scanf("%s", &chepaihao1);
strcpy(p->chepaihao, chepaihao1);
}
return head;
}
p = p->next;
}
printf("\t\t\t\t未找到该车型号的车辆信息!\n");
return head;
}
struct chexinxi* chaxun_chepaihao(struct chexinxi* head) {
char chepaihao[N];
printf("\t\t\t\t请输入车牌号:");
scanf("%s", chepaihao);
struct chexinxi* p = head;
while (p != NULL) {
if (strcmp(chepaihao, p->chepaihao) == 0) {
printf("\t\t\t\t车型号:%s 车牌号:%s\n", p->chexinghao, p->chepaihao);
return head;
}
p = p->next;
}
printf("\t\t\t\t未找到该车牌号的车辆信息!\n");
return head;
}
struct chexinxi* chazhao(struct chexinxi* head) {
int n;
printf("\t\t\t\t请选择查找方式(1.车型号,2.车牌号):");
scanf("%d", &n);
if (n == 1) {
head = chaxun_chexinghao(head);
}
else if (n == 2) {
head = chaxun_chepaihao(head);
}
else {
printf("\t\t\t\t输入错误!\n");
}
return head;
}
```
优化后的代码结构更加清晰,易于阅读和维护,并且能够提高程序的执行效率和代码质量。
阅读全文