Python Pandas/Numpy-如何获取和比较每列的计数以及写入csv?
我试图找出如何将每个数据帧列的计数与每个数据帧列进行比较。可以有超过300个列,因此将有超过300 X 300=超过90000个比较。以下是一些示例数据: 我试图找出有多少55岁的是女性,有多少48岁的是男性,有多少男性是NP D,等等 这是我使用的代码的一部分: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
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)
您可以编写程序来动态创建此正则表达式,然后应用于额外的列,然后提取导致正则表达式匹配的行