gpt4 book ai didi

python - 用 Pandas 计算大数据中的条目

转载 作者:太空狗 更新时间:2023-10-30 02:42:06 26 4
gpt4 key购买 nike

我正在使用制表符分隔的文件:

A    B    C    D
a d ii do
a d g do
a h g do
a i k mo
c i k mo
c g ii mo
v g p do

我想计算第一列中的每个条目以及第二、第三和第四列中的所有相关条目,例如:

a 4 d 2 h 1 i 1 ii 1 k 1 domain 3 motif 1
c 2 i 1 g 1 k 1 ii 1 motif 2
v 1 g 1 p 1 motif 1

我正在尝试通过这些命令使用 python pandas 对这些数据进行排序:

df = pd.read_csv('file.txt', delimiter= '\t', names = ['A', 'B', 'C', 'D']) 
df1.groupby(['a', 'c', 'd', 'e']).count()

但它没有返回所需的结果。

最佳答案

import pandas as pd
df = pd.DataFrame({'A': ['a', 'a', 'a', 'a', 'c', 'c', 'v'],
'B': ['d', 'd', 'h', 'i', 'i', 'g', 'g'],
'C': ['ii', 'g', 'g', 'k', 'k', 'ii', 'p'],
'D': ['domain', 'domain', 'domain', 'motif',
'motif', 'motif', 'domain']})

melted = pd.melt(df, id_vars='A')
count = melted.groupby(['A', 'value'])['value'].count()
result = count.unstack(fill_value=0)
result['A'] = df.groupby('A')['A'].count()
print(result)

产量

value  d  domain  g  h  i  ii  k  motif  p  A
A
a 2 3 2 1 1 1 1 1 0 4
c 0 0 1 0 1 1 1 2 0 2
v 0 1 1 0 0 0 0 0 1 1

解释:

  • 使用 pd.melt将所有列(A 列除外)合并为一列:

    In [517]: melted = pd.melt(df, id_vars='A'); melted
    Out[517]:
    A variable value
    0 a B d
    1 a B d
    2 a B h
    3 a B i
    4 c B i
    ...
  • 然后你可以groupby/count Avalue 列:

    In [520]: count = melted.groupby(['A', 'value'])['value'].count(); count
    Out[520]:
    A value
    a d 2
    domain 3
    g 2
    h 1
    ...
  • count.unstack('value')value 索引级别移动到列索引级别:

    In [522]: count.unstack('value', fill_value=0)
    Out[522]:
    value d domain g h i ii k motif p
    A
    a 2 3 2 1 1 1 1 1 0
    c 0 0 1 0 1 1 1 2 0
    v 0 1 1 0 0 0 0 0 1

关于python - 用 Pandas 计算大数据中的条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37635867/

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