gpt4 book ai didi

python - Pandas/Numpy - 如何获取每列的计数并将其与每列进行比较并写入 csv?

转载 作者:行者123 更新时间:2023-12-01 06:52:09 24 4
gpt4 key购买 nike

我试图弄清楚如何将每个数据框列的计数与每个数据框列进行比较。可以有超过 300 列,因此将有超过 300 X 300 = 超过 90,000 次比较。这是一些示例数据:

enter image description here

我试图找出有多少“AGE”55 是女性,有多少“AGE”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

我得到的结果与此类似:

enter image description here

我正在寻找的结果与此类似: enter image description here

第一个“AGE”、“NP”、“GENDER”位于一行(只是没有列名称的计数);第二个“AGE”、“NP”、“GENDER”位于下一行(只是没有列名称的计数);第三个“AGE”、“NP”、“GENDER”位于一行(只是没有列名称的计数)。

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

最佳答案

解决方法是创建一个列,并连接其他三个列值来填充该列,然后对结果应用正则表达式查询。因此,您的行“55 D Female”将是“55DFemale”。

例如如果我们使用与您相同的输入表,则正则表达式将如下所示,前提是 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)

您可以编写程序来动态创建此正则表达式,然后应用到额外的列,然后拉出导致正则表达式匹配的行。

关于python - Pandas/Numpy - 如何获取每列的计数并将其与每列进行比较并写入 csv?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58940718/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com