我已经创建了一个包含列Name和Mains的数据帧。
data = [['Anshu', '8321-1328-11'], ['Hero', '83211-1128-11'], ['Naman', '65432-8765-4']]
df = pd.DataFrame(data, columns = ['Name', 'Mains'])我想用一个更新的值(即df' new _ Mains‘)将mains列更新到一个新列中,条件是:如果数字被4-4-2分开,那么应该加上0,更新后的分开的数字将是5-4-2?在熊猫身上这样做是可能的吗?
发布于 2019-09-05 23:09:20
我很确定这是可以做到的。例如,
def my_func(strn):
a,b,c = strn.split('-')
new_a = '0'+a if len(a)==4 else a
new_b = '0'+b if len(b)==3 else b
new_c = '9'+c if len(c)==1 else c
return '-'.join([new_a,new_b,new_c])然后,
df['New_Mains'] = df['Mains'].apply(my_func)注意:不再假设'a‘的长度是4或5。如果'a','b','c’是任何其他长度,那么你也可以这样做(同样适用于当前场景)
new_a = '0'*5-len(a) + a
new_b = '0'*4-len(b) + b
new_c = '9'*2-len(c) + c有关str.split的更多信息,请点击此处。基本上,在您的示例中,字符串类似于"99999-9999-99“,并使用"-”作为分隔符。所以,
"99999-9999-99".split('-') #would return
['99999', '9999', '99'] 其中a= '99999',b= '9999',c= '99‘。
new_a、new_b、new_c是变量,用于在检查条件语句后保存a、b和c的新值。最后,将字符串new_a、new_b、new_c连接起来,使其看起来像“Mains”列中的原始字符串。有关str.join的更多信息
https://stackoverflow.com/questions/57807363
复制相似问题