pandas 带if条件的python for循环

chhkpiq4  于 2023-02-17  发布在  Python
关注(0)|答案(3)|浏览(156)

这是我的数据集:

q1  q2  q3     q4
0   a   a   a   a
1   b   a   a   a
2   c   c   b   a
3   d   d   b   a
4   a   a   a   a
5   b   c   b   a
6   b   a   b   a
7   c   c   b   a
8   d   d   b   a

其中列

  • q1具有“a”、“b”、“c”、“d”列值。
  • q2具有“a”、“c”、“d”列值。
  • q3具有'a'、'B'列值。
  • Q4具有“a”列值。

我想用通用公式对所有列运行for循环,但不是所有列都有所有值。我得到一个错误。
示例:enter image description here

col = ['q1', 'q2', 'q3', 'q4']

for i in col:
    print((df[i].value_counts()['a']) + (df[i].value_counts()['b']) + (df[i].value_counts()['c']) + (df[i].value_counts()['d']))
wmomyfyw

wmomyfyw1#

您可以尝试使用多个if条件来检查特定列中的值:

col = ['q1', 'q2', 'q3', 'q4']

for i in col:
    count = 0
    if 'a' in df[i].unique():
        count += df[i].value_counts()['a']
    if 'b' in df[i].unique():
        count += df[i].value_counts()['b']
    if 'c' in df[i].unique():
        count += df[i].value_counts()['c']
    if 'd' in df[i].unique():
        count += df[i].value_counts()['d']
    print(count)
qkf9rpyu

qkf9rpyu2#

您可以尝试在for()中声明这些值:

col = ['q1', 'q2', 'q3', 'q4']
values = ['a', 'b', 'c', 'd']
for i in col:
    count = 0
    for v in values:
        if v in df[i].values:
            count += df[i].value_counts()[v]
    print(count)
tjvv9vkg

tjvv9vkg3#

您可以使用、创建列表和附加:

list_C = []
for i in cols:
    a = df[i].str.count("A").sum()
    list_C.append(a)
    b = df[i].str.count("B").sum()
    list_C.append(b)
    c = df[i].str.count("C").sum()
    list_C.append(c)
    d = df[i].str.count("D").sum()
    list_C.append(d)

print(list_C)
print(sum(list_C))

相关问题