Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/299.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.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 如果每一行有多个数据要处理,如何迭代某一列下的行?_Python_Pandas - Fatal编程技术网

Python 如果每一行有多个数据要处理,如何迭代某一列下的行?

Python 如果每一行有多个数据要处理,如何迭代某一列下的行?,python,pandas,Python,Pandas,我在excel文件中有这样的数据,我使用pandas将其导入到我的程序中: 我需要迭代“IPC”列中每一行的每一个数据,并按它们的前4个字符进行计数(例如A61K038/51=>A61K)。但大多数行包含不止一个数据,它们之间用分号分隔 我的想法是先对行进行迭代,然后再对行的数据进行迭代。我知道如何在其他数据类型中做这些事情,但我对pandas不熟悉,pandas dataframe使事情变得更加复杂!请帮忙!如果您能提供任何关于最佳方法的指导,我们将不胜感激 编辑:前20行

我在excel文件中有这样的数据,我使用pandas将其导入到我的程序中: 我需要迭代“IPC”列中每一行的每一个数据,并按它们的前4个字符进行计数(例如A61K038/51=>A61K)。但大多数行包含不止一个数据,它们之间用分号分隔

我的想法是先对行进行迭代,然后再对行的数据进行迭代。我知道如何在其他数据类型中做这些事情,但我对pandas不熟悉,pandas dataframe使事情变得更加复杂!请帮忙!如果您能提供任何关于最佳方法的指导,我们将不胜感激

编辑:前20行

                  Company Name                        ...                                                                        IPC
0   Phoenix Pharmacologics Inc                        ...                          A61K038/51;A61K038/21;A61K031/7076;A61K031/707...
1   Phoenix Pharmacologics Inc                        ...                                                      A61K038/46;C12N009/80
2   Phoenix Pharmacologics Inc                        ...                                                                 A61K038/43
3   Phoenix Pharmacologics Inc                        ...                                           A61K038/50;A61K045/06;A61K047/48
4   Phoenix Pharmacologics Inc                        ...                                                      A61K038/44;C12N009/06
5   Phoenix Pharmacologics Inc                        ...                                          C07K014/525;C12N009/78;C12N015/81
6   Phoenix Pharmacologics Inc                        ...                                                      A61K038/00;C12N009/06
7   Phoenix Pharmacologics Inc                        ...                                                                 C12Q001/68
8   Phoenix Pharmacologics Inc                        ...                                                      A61K038/50;C12N009/78
9   Phoenix Pharmacologics Inc                        ...                                C12N011/06;C12N009/96;C12N009/06;A61K038/44
10  Phoenix Pharmacologics Inc                        ...                                                                 C12N009/14
11  Phoenix Pharmacologics Inc                        ...                                C12N011/06;C12N009/06;C12N009/96;C12N011/08
12  Phoenix Pharmacologics Inc                        ...                                A61K038/00;A61K047/48;C12N009/78;C12N009/96
13  Phoenix Pharmacologics Inc                        ...                                                     A61K038/00;C07K014/525
14           Phytoceutica, Inc                        ...                          A61K036/539;A61P035/00;A61K036/484;A61K036/725...
15           Phytoceutica, Inc                        ...                                                                 A01N065/00
16           Phytoceutica, Inc                        ...                                                                 A61K036/00
17           Phytoceutica, Inc                        ...                                                      G01N033/48;G06F017/00
18           Phytoceutica, Inc                        ...                                C12Q001/68;C12Q001/68;G06F019/00;G06F019/00
19           Phytoceutica, Inc                        ...                                                                 G06F019/00

如果要根据前4个字符计算元素,可以定义一个函数来完成此操作,然后将其应用于数据帧,如下所示:

import numpy as np

df = pd.DataFrame({'IPC': ['A61K038/52;A61K038/21', 'A61K038/46;C12N009/80']})

def count_ipc(ipc):
    items = ipc.split(';')
    items = [val[:4] for val in items]  # extract first 4 elements
    values = np.unique(items)  # count unique elements with numpy
    return len(items)

df['cnt'] = df.apply(lambda row: count_ipc(row['IPC']), axis=1)
结果是:

                 IPC  cnt
0  A61K038/52;A61K038/21    1
1  A61K038/46;C12N009/80    2
您可以使用pandas并将其链接到它以获得结果:

示例数据

# Example dataframe
df = pd.DataFrame({'IPC':['A61K038/51;A61K038/21;A61k031', 'A80934;A758392']})
print(df)
                             IPC
0  A61K038/51;A61K038/21;A61k031
1                 A80934;A758392
应用拆分和len

df['count'] = df.IPC.str.split(';').str.len()
print(df)
                             IPC  count
0  A61K038/51;A61K038/21;A61k031      3
1                 A80934;A758392      2
一个是lambda

df = pd.DataFrame({'IPC': ['A61K038/52;A61K038/21;A61K038', 'A61K038/46;C12N009/80']})

def counter(ipc):
    temp = ipc.split(';')
    first_4 = temp[0][:4]
    return sum(1 for i in temp if i.startswith(first_4) )

df['cnt']= df['IPC'].apply(counter)
输出

                             IPC  cnt
0  A61K038/52;A61K038/21;A61K038    3
1          A61K038/46;C12N009/80    1

嗨,谢谢你马上回复!对不起,我忘了说我需要按它们的前4个字符数一数。例如,A61K038/51;A61K038/21;A61K031/7076;全部变成A61K,我必须计算A61K的数量。代码可以在我的程序中运行,但不能正确计算IPC。嗨,谢谢你的回复!对不起,我忘了说我需要按它们的前4个字符数一数。例如,A61K038/51;A61K038/21;C01K031/7076;成为A61K和C01K,我必须分别计算A61K和C01K的数量。每行?或者通过整列?我需要计算在整列中有多少类型的IPC(例如type=A61K、C01K等),并计算a公司每种类型有多少IPC(例如a公司有4个A61K、2C01K)。您能在问题中添加前20行吗?使用:
打印(测向头(20))
。您可以通过编辑将输出复制并粘贴到问题中。我添加了前20行。您好,谢谢您的回复!据我所见,你的代码只计算A61K?