pandas數據框,統計某列數據與其他文件對應關係的個數

現在要解決的問題如下:

我們有一個數據的表


第7列有許多數字,並且是用逗號分隔的,數字又與第二個文件有一個對應的關係:


我們要得到第7列對應關係的統計,就是每一行的第7列a有多少個,b有多少個




好了,我給的解決方法如下:

#!/bin/python
#-*-coding:UTF-8-*-
import pandas as pd
import numpy as np

dfidspec = pd.read_table("one.txt")#這個是對應關係的文件
dfmgs = pd.read_table("two.txt",header = None)#這個是我們數據的表

def getlistnum(li):#這個函數就是要對列表的每個元素進行計數
    set1 = set(li)
    dict1 = {}
    for item in set1:
        dict1.update({item:li.count(item)})
    return dict1

bigdict = dict(zip(dfidspec['ID'],dfidspec['class']))#獲得一個關係的字典
dfmgs['indeo'] = 'a'#在讀取的數據框新建一個字符列

for i in range(len(dfmgs.index)):#對每一行進行操作
    spp = [bigdict[int(j)] for j in dfmgs.iloc[i, 6].split(',')]#對於第7列的格子中的每個數進行字典取值
    sppnum = getlistnum(spp)
    dfmgs.iloc[i, 7] = str(sppnum)

dfmgs.to_csv("three.txt",sep = '\t',index = False)

這個就可以得到想要的結果了:



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章