table1 table2
學號 性別 學號 姓名 班級排名
1 男 1 杜新生 1
2 女 2 招娣 2
3 男 3 佩佩 3
table3 table4
姓名 班級 班級排名 科目 班級
招娣 1 數學 三年二班
佩佩 三年一班 2 物理 三年三班
杜新生 3 化學
我要實作的是四個作業表的合并,大致表格情況如上例子,需要把四個表組合成一個表,然后table3的空白資料還可以根據tabe4的內容進行填充,并且合成的表不存在重復列。
由于我還是個菜鳥,我的代碼只是簡單實作如下:
import pandas as pd
import numpy as np
def get_mac():
#coding utf-8
# df1 = pd.read_excel("C:/Users/asus/Desktop/W.xls")
# df2 = pd.read_excel("C:/Users/asus/Desktop/R.xls")
# result = pd.merge(df1, df2, how="inner", on="satisfaction_level" and "")
# result.to_excel("C:/Users/asus/Desktop/result.xls")
df = pd.DataFrame({"學號":pd.Series([1,2,3,4]),\
"性別":pd.Series(["男","女","男","女"])})
df1 = pd.DataFrame({"學號":pd.Series([1,2,3,4]),\
"姓名":pd.Series(["杜新生","招娣","佩佩","吳瑾言"]),\
"班級排名":pd.Series([1,2,3,4])})
df2 = pd.DataFrame({"姓名":pd.Series(["招娣","杜新生","佩佩","吳瑾言"]),\
"班級":pd.Series(["三年二班","","三年三班",""])})
df3 = pd.DataFrame({"班級排名":pd.Series([1,2,3,4]),\
"科目":pd.Series(["數學","物理","化學","政治"]),\
"班級":pd.Series(["三年一班","三年二班","三年三班","三年一班"])})
result1 = pd.merge(df,df1,how="inner", on="學號")
result2 = pd.merge(result1,df2,how="inner",on="姓名")
result3 = pd.merge(result2,df3,how="inner",on="班級排名")
print(data)
if __name__ == "__main__":
get_mac()
復制代碼
目前存在問題如下:
1.如何把result2和table4合并,并根據table4班級資訊補全result2的內容
2.我要處理的是四個excel表單,我代碼中的方式是不是考慮不全面過于簡單?需不需要先篩選資料之類的?
3.相同列如何進行模糊匹配排除可能輸入錯誤的資訊?
可能由于我太菜了,我研究這點玩意研究了一天沒研究明白,請求各位大神幫助
uj5u.com熱心網友回復:
def get_mac():
df = pd.DataFrame({u"學號":pd.Series([1,2,3,4]),\
u"性別":pd.Series([u"男",u"女",u"男",u"女"])})
print df
df1 = pd.DataFrame({u"學號":pd.Series([1,2,3,4]),\
u"姓名":pd.Series([u"杜新生",u"招娣",u"佩佩",u"吳瑾言"]),\
u"班級排名":pd.Series([1,2,3,4])})
df2 = pd.DataFrame({u"姓名":pd.Series([u"招娣",u"杜新生",u"佩佩",u"吳瑾言"]),\
u"班級":pd.Series([u"三年二班","",u"三年三班",""])})
df3 = pd.DataFrame({u"班級排名":pd.Series([1,2,3,4]),\
u"科目":pd.Series([u"數學",u"物理",u"化學",u"政治"]),\
u"班級":pd.Series([u"三年一班",u"三年二班",u"三年三班",u"三年一班"])})
result1 = pd.merge(df,df1,how="inner", on=u"學號")
result2 = pd.merge(result1,df2,how="inner",on=u"姓名")
df3.columns=['cclass','c_rank','subject']
result3 = pd.merge(result2,df3,how="inner",left_on=u"班級排名",right_on='c_rank')
result3.loc[(result3[u'班級']==u''),u'班級']=result3.cclass #補齊空值
return result3
if __name__ == "__main__":
print get_mac()
uj5u.com熱心網友回復:
資料少還行,多了那么寫,呵呵。還不如自己。。。。。。。轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/133233.html
上一篇:如何利用r語言實作熵值法?
