【发布时间】:2022-07-17 04:11:31
【问题描述】:
我写了以下代码。我想将数字“1”替换为“0”,只要它针对特定的universal_id出现两次或更多,剩下的数字“1”应该在天数最低的行中。下面的代码可以完成工作,但我想迭代一个以上的universal_id。 “e”列适用于“efra”,我希望其他 ID 和其他列也可以这样做。
pdf1 = pd.DataFrame(
[[1, 0,1, 0,1, 60, 'fdaf'],
[1, 1,0, 0,1, 350, 'fdaf'],
[1, 1,0, 0,1, 420, 'erfa'],
[0, 1,0, 0,1, 410, 'erfa']],
columns=['A', 'B', 'c', 'd', 'e', 'days','universal_id'])
pdf1['A'] = np.where(pdf1['days']==pdf1['days'].min(),1,0)
zet = pdf1.loc[pdf1['e'].isin([1]) &
pdf1['universal_id'].str.contains('erfa')]
zet['e'] = np.where(zet['days']==zet['days'].min(),1,0)
pdf1.loc[zet.index, :] = zet[:]
pdf1
输出:
A B c d e days universal_id
0 1 0 1 0 1 60 fdaf
1 0 1 0 0 1 350 fdaf
2 0 1 0 0 0 420 erfa
3 0 1 0 0 1 410 erfa
【问题讨论】:
-
你能从样本数据中添加预期的输出吗?
-
请提供足够的代码,以便其他人更好地理解或重现问题。
-
为什么不在 A oupout
1,0,0,1中? -
你是 wright jezrael 它应该是 1,0,0,1
标签: python pandas dataframe iterator