Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/341.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
使用pandas(Python)从字符串矩阵构造计数矩阵(整数)的方法_Python_Pandas_Dataframe_Matrix - Fatal编程技术网

使用pandas(Python)从字符串矩阵构造计数矩阵(整数)的方法

使用pandas(Python)从字符串矩阵构造计数矩阵(整数)的方法,python,pandas,dataframe,matrix,Python,Pandas,Dataframe,Matrix,有人能帮我找到一个方法来解决下面的问题吗?我更喜欢寻找解决问题的术语,但是如果你知道一个快速而肮脏的方法,我也会很感激 我有一个如下所示的矩阵: sample_1. sample_2. sample_3. sample_4. G1 inc_1,inc_1A. *. inc_1. inc_1. G2 inc_2. *. *.

有人能帮我找到一个方法来解决下面的问题吗?我更喜欢寻找解决问题的术语,但是如果你知道一个快速而肮脏的方法,我也会很感激

我有一个如下所示的矩阵:

        sample_1.             sample_2. sample_3.     sample_4.
G1  inc_1,inc_1A.                    *.    inc_1.        inc_1.
G2         inc_2.                    *.        *.            *.
G3             *.  inc_3,inc_3A,inc_3B.    inc_3.  inc_3,inc_3A
我希望将其转换为如下所示的计数矩阵

    sample_1.   sample_2.    sample_3.    sample_4.
G1    2   0   1   1
G2    1   0   0   0
G3    0   3   1   2
这个数据库相当大(大约10000列和3000000行),所以我想尽量避免使用df.iterrows()。有人知道我如何开始实施这一点吗

单元格中的“u”可以计算为所有事件都有此术语,“*”表示未检测到(或0)

非常感谢您提供的任何帮助、建议或建设性的批评。

您可以使用+统计数据帧列中每个字符串中出现的
\uucode>:

df.apply(lambda s: s.str.count(pat='_'))


这可能是一种发布问题的方式,这样其他人就可以很容易地处理:

import pandas as pd
d = {'col1': ['inc_1,inc_2.', 'inc_2', '*.'], 'col2': ['inc_1.', '*.', 'inc_1,inc_3.']}
df = pd.DataFrame(data=d)
这里有一个解决方案。请注意,applymap是关键:

df_new = df.copy()
df_new = df_new.applymap(lambda x: x.count('_'))
print(df_new)

你试过regex()吗?我没有试过,但我现在要读一读。谢谢,我从来没有考虑过lambda函数或df.apply!非常感谢,我没有考虑df.apply、df.applymap或lambda函数。我自学python,所以我的知识差距很大。谢谢你的意见,没关系。所以这里有一些例子和案例要学习。
df_new = df.copy()
df_new = df_new.applymap(lambda x: x.count('_'))
print(df_new)