广告
淘宝内部优惠券
当前位置: 开发异常方案库» 其他开发语言 » python dateframe 查找

python dateframe 查找

开发异常方案库  收集整理于:2020-05-27 20:51:00  浏览:66次
有两个表格,用表格二的BOMRef内容查找表格一里BOM里的内容有包含就把表格一对应的Number的值赋给表格二的Number1里   结果图:

------网友观点--------------------
最好是把数据以代码的形式发出来,另外结果表是错吧,是sw2的number是1236?

------网友观点--------------------
import pandas as pd
s1=pd.DataFrame([[123,'s1,s2,s3'],[124,'sw2'],[125,'j3,j4']],columns=['number','bom'])
print(s1)
s2=pd.DataFrame([[1234,'s2,s3'],[1235,'j2'],[1236,'j3,j4']],columns=['number1','bomref'])
ss1=s1['bom'].tolist()
ss2=s2['bomref'].tolist()
print(ss1)
for sss in ss1:
	if sss in ss2:
		s2.loc[s2['bomref']==sss,'number1']=s1.loc[s1['bom']==sss,'number']
print(s2)

------网友观点--------------------
import pandas as pd
'''
有两个表格,用表格二的BOMRef内容查找表格一里BOM里的内容,有包含就把表格一对应的Number的值赋给表格二的Number1里
'''
s1=pd.DataFrame([[123,'s1,s2,s3'],[124,'sw2'],[125,'j3,j4']],columns=['number','bom'])
print(s1)
s2=pd.DataFrame([[1234,'s2,s3'],[1235,'j2'],[1236,'j3,j4']],columns=['number1','bomref'])
ss1=s1['bom'].tolist()
ss2=s2['bomref'].tolist()
print(ss1)
for sss in ss1:
	if sss in ss2:
		s2.loc[s2['bomref']==sss,'number1']=s1.loc[s1['bom']==sss,'number']
print(s2)
s2=pd.DataFrame([[1234,'s2,s3'],[1235,'j2'],[1236,'j3,j4']],columns=['number1','bomref'])
for sss in ss2:
	s2.loc[s2['bomref']==sss,'number1']=s1.loc[s1['bom']==sss,'number'] if sss in ss1 else s2.loc[s2['bomref']==sss,'number1']
print(s2)

------网友观点--------------------
s1=pd.DataFrame([[123,'s1,s2,s3'],[124,'sw2'],[125,'j3,j4']],columns=['number','bom']) s2=pd.DataFrame([[1234,'s3,s2'],[1235,'j3'],[1236,'sw2']],columns=['number1','bomref']) 结果要s2的number1的内容要更换为s1里的number的内容  

------网友观点--------------------
import pandas as pd
df = pd.read_excel(r"c:\xx.xlsx", sheet_name=['Sheet1', 'Sheet2'])
df['Sheet1']['n'] = df['Sheet1'].apply(lambda x: set(x['BOM'].split(',')), axis = 1)
df['Sheet2']['n'] = df['Sheet2'].apply(lambda x: set(x['BOMRef'].split(',')), axis = 1)
for row1 in df['Sheet1'].iterrows():
    for row2 in df['Sheet2'].iterrows():
        if row2[1]['n'].issubset(row1[1]['n']):
            df['Sheet2'].loc[row2[0], 'Number'] = row1[1]['Number']
            break
print(df['Sheet2'])

------网友观点--------------------
   number1 bomref 0     1234  s2,s3 1     1235     j2 2      125  j3,j4    number1 bomref 0     1234  s2,s3 1     1235     j2 2      125  j3,j4 这样不对吗

------网友观点--------------------
引用 4 楼 qq_42368700 的回复:
s1=pd.DataFrame([[123,'s1,s2,s3'],[124,'sw2'],[125,'j3,j4']],columns=['number','bom']) s2=pd.DataFrame([[1234,'s3,s2'],[1235,'j3'],[1236,'sw2']],columns=['number1','bomref']) 结果要s2的number1的内容要更换为s1里的number的内容  
才看明白点,意思是说s2j里面是一组的,那么在s1里肯定也在一组,比如 s2中的s3,s2,则一定一起出现在s1在某组里

------网友观点--------------------
import pandas as pd
'''
有两个表格,用表格二的BOMRef内容查找表格一里BOM里的内容,有包含就把表格一对应的Number的值赋给表格二的Number1里
'''
 
s1=pd.DataFrame([[123,'s1,s2,s3'],[124,'sw2'],[125,'j2,j3,j4']],columns=['number','bom'])
s2=pd.DataFrame([[1234,'s2,s3'],[1235,'j2'],[1236,'j3,j4']],columns=['number1','bomref'])
 
ss1=s1['bom'].tolist()
ss2=s2['bomref'].tolist()
print(s1)
print(s2)
for sss in ss2:
    sss=sss.split(',')[0]
    s2.loc[s2['bomref'].str.contains(sss),'number1']=s1.loc[s1['bom'].str.contains(sss),'number'].values
print(s2)
 
   number       bom 0     123  s1,s2,s3 1     124       sw2 2     125  j2,j3,j4    number1 bomref 0     1234  s2,s3 1     1235     j2 2     1236  j3,j4    number1 bomref 0      123  s2,s3 1      125     j2 2      125  j3,j4
发布此文章仅为传递网友分享,不代表本站观点,若侵权请联系我们删除,本站将不对此承担任何责任。
软件开发 程序错误 异常 ybaby.netCopyright © 2020-2026  ybaby 版权所有  桂ICP备17004385号-2 网站地图