有两列数据,数据非常多,如表格,要将空白处填充为表格中对映的内容?
感觉自己写的和屎一样
import pandas as pd
from math import nan, isnan
data = pd.DataFrame({
'A': [f'A{i:03}' for i in range(1, 14)] + [f'A{i:03}' for i in range(1, 6)] + [f'A{i:03}' for i in range(19, 26)],
'B': [f'B10000{i:02}' for i in range(13)] + [nan for i in range(5)] + [f'B0000{i}' for i in range(22, 29)]
})
data_tmp = data.dropna()
dic = dict(zip(data_tmp['A'], data_tmp['B']))
for i in range(len(data)):
if (not isinstance(data.iloc[i, 1], str)) and isnan(data.iloc[i, 1]):
data.iloc[i, 1] = dic[data.iloc[i, 0]]
data.to_excel('res.xlsx', index = False)
可以用pandas处理。
1.首先将待填充的内容通过python的pandas包提取出来,意思就是把你图片上的黄色区域取出来,用一个变量存储好(List1)
2.然后再将B1000001~B1000004的内容取出来用一个变量存储好(List2)
3.建立一个for循环,逐个将List2中每个索引对应的值赋给List1的索引对应的值(List2[i]=List1[i])
#不保留顺序
import pandas as pd
df = pd.DataFrame(
{'B': [1,2,3,4,5,np.NaN,np.NaN,6]},
index=['A1','A2','A3','B1','B2','A1','A2','A4'],
)
dff=df[~df.B.isna()].copy()
dfna=df[df.B.isna()].copy()
dfna.update(dff)
dfnew=pd.concat([dff,dfna])
print(dfnew)
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!