在数据框中查找字符串并将新值存储在新列中

曼努埃尔·多明格斯(Manuel Dominguez)

我正在创建一个使用csv文件的脚本,该文件的列组织和列名称未知。但是,我知道该列中只有一个包含一些以str'rs'和'del'出现的值。

我需要创建一个额外的列(称为“类型”),并将“ dbsnp”存储在找到“ rs”的行中,并将“删除”存储在找到“ del”的行中。如果未找到str,则将此列的列类型保留为空。

例如,我提供此df:

Data = {'Number': ['Mukul', 'Rohan', 'Mayank', 
                  'Shubham', 'Aakash'], 
          
        'Location': ['Saharsanpur', 'MERrs', 'rsAdela', 
                     'aaaadelaa', 'aaa'], 
          
        'Pay': [25000, 30000, 35000, 40000, 45000]} 
  
df = pd.DataFrame(Data)
print(df)

 Name     Location    Pay
0    Mukul  Saharsanpur  25000
1    Rohan        MERrs  30000
2   Mayank      rsAdela  35000
3  Shubham    aaaadelaa  40000
4   Aakash          aaa  45000

我一直在尝试这样的事情

df["type"] = df["Name"].str.extract("rs")[0] 
# and then do some replace

但是我的问题之一是我不知道列名也不知道位置。

需求输出

 Name     Location    Pay       type
0    Mukul  Saharsanpur  25000 dbsnp
1    Rohan        MERrs  30000 dbsnp
2   Mayank      rsAdela  35000 dbsnp
3  Shubham    aaaadelaa  40000 deletion
4   Aakash          aaa  450

下一个for循环解决了未知列的问题,但是现在我需要解决在值中标识我的str的问题。

如何在if条件下使用str.contains(“ rs”)?

for index, row in df[:3].iterrows():
    for i in range(len(df.columns)): 
        if row[i] == 5:
            print(row.index[i])

乔·费尔兹(Joe Ferndz)

您可以无循环执行。这是一种方法。您可以使用applymap并搜索所有列。

import pandas as pd
data = {'Number': ['Mukul', 'Rohan', 'Mayank', 
                  'Shubham', 'Aakash'], 
          
        'Location': ['Saharsanpur', 'MERrs', 'rsAdela', 
                     'aaaadelaa', 'aaa'], 
          
        'Pay': [25000, 30000, 35000, 40000, 45000]} 
  
df = pd.DataFrame(data)

df['rs'] = df.astype(str).applymap(lambda x: 'rs' in x).any(1)
df['del'] = df.astype(str).applymap(lambda x: 'del' in x).any(1)

df['type']=''
df.loc[df['rs'] == True, 'type'] = 'dbsnp'
df.loc[df['del'] == True, 'type'] = 'deletion'

df = df.drop(columns=['rs','del'])
print (df)

根据表中的数据,rsAdela具有rsdel由于我rs申请del第二名,因此该行被标记为deletion您可以选择交换订单以决定是否要保留dbsnp或的价值deletion

该代码处理所有列,而与dtype无关。

以上数据的输出为:

    Number     Location    Pay      type
0    Mukul  Saharsanpur  25000     dbsnp
1    Rohan        MERrs  30000     dbsnp
2   Mayank      rsAdela  35000  deletion
3  Shubham    aaaadelaa  40000  deletion
4   Aakash          aaa  45000          

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在字符串中查找模式并将其提取为数据框的新列

在数据框中查找字符串的索引和列数

使用字符串向量在数据框中查找字符串

在Excel中查找字符串,并将列字母存储在变量VBA中

R-在数据框中查找字符串的每个位置

在数据框中拆分字符串,并将新字符串分配给数据框中的新行(与toString()相反)

Pandas 从行索引中查找特定字符串并将值返回到新列

Python:在多列中查找字符串,然后在新列中返回

在熊猫数据框中查找子字符串并保存在新列中

在数组中查找字符串并返回列的第一个值

拆分字符串并存储到熊猫数据框中的新列中

使用Python捕获字符串中的数字并将其存储在数据框中

R,从向量中查找字符串,创建新的 TRUE/FALSE 列

如何查找字符串是否包含字符并将值存储在2个单独的变量中

计算熊猫中整个数据框中特定字符串的数量,并将其值添加到新列中

在数据框中查找值,并在pandas的新列中添加优先列值

Python:在数据框中,创建一个新列,并使用从另一列的值中切出的字符串

熊猫在关联的字符串值处将列添加到新数据框中?

如何从R的数据框中的字符串中提取数字并将其放置在新列中?

在数据框中查找和替换字符串

从数据框中查找字符串中子字符串的索引

分割Python数据框字符串并将最后分割的部分保存到新列中

如何拆分数据框中的列并将每个值存储为新行(在熊猫中)?

在数据框中查找字符并更改相邻行

在具有各种数据类型的数据框列中查找字符串中的数字

使用可为空的布尔值在数据框中查找空字符串

在数组中查找字符串

在数组中查找字符串

在数组中查找字符串-C编程