Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Pandas/Numpy-如何获取和比较每列的计数以及写入csv?_Python_Pandas_Numpy - Fatal编程技术网

Python Pandas/Numpy-如何获取和比较每列的计数以及写入csv?

Python Pandas/Numpy-如何获取和比较每列的计数以及写入csv?,python,pandas,numpy,Python,Pandas,Numpy,我试图找出如何将每个数据帧列的计数与每个数据帧列进行比较。可以有超过300个列,因此将有超过300 X 300=超过90000个比较。以下是一些示例数据: 我试图找出有多少55岁的是女性,有多少48岁的是男性,有多少男性是NP D,等等 这是我使用的代码的一部分: df_search1 = pd.read_csv("file1.txt",sep='\t', dtype=str,engine='c',header=0,encoding='latin-1') items = ['AGE','N

我试图找出如何将每个数据帧列的计数与每个数据帧列进行比较。可以有超过300个列,因此将有超过300 X 300=超过90000个比较。以下是一些示例数据:

我试图找出有多少55岁的是女性,有多少48岁的是男性,有多少男性是NP D,等等

这是我使用的代码的一部分:

df_search1 = pd.read_csv("file1.txt",sep='\t', 
dtype=str,engine='c',header=0,encoding='latin-1')

items = ['AGE','NP','GENDER']

headr = True
for item1 in items:
    headr = True
    for item2 in items:
        # appends
        df_search1[(df_search1['%s'%item1].notnull()) & (df_search1['%s'%item2].notnull())] 
        [['%s'%item2]].count().to_csv('search_out.txt',header=headr,sep='\t',mode='a')
        headr = False
我得到的结果与此类似:

我想要的结果与此类似:

其中第一个‘年龄’、‘NP’、‘性别’在一行上(仅指没有列名的计数);第二个‘年龄’、‘NP’、‘性别’将位于下一行(只是没有列名的计数);第三个‘年龄’、‘NP’、‘性别’列在一行上(只是没有列名的计数)

任何帮助都将不胜感激。
谢谢

一个解决方法是创建一个列,该列将其他三个列值连接起来,然后对结果应用正则表达式查询。所以你的“55D女性”排是“55D女性”

例如,如果我们使用与您相同的输入表,如果concat中的列顺序为AGE+NP+GENDER,则正则表达式将如下所示

   Query                                  Regex
   1. how many 'AGE' 55 were Female    => (55)(.)(Female)
   2. how many 'AGE' 48 were male      => (48)(.)(Male)
   3. how many Male were 'NP' D        => ([0-9]{2})(D)(Male)
您可以编写程序来动态创建此正则表达式,然后应用于额外的列,然后提取导致正则表达式匹配的行