【问题标题】:Need help using pandas to read a column and print a new column in .csv file需要帮助使用 pandas 读取列并在 .csv 文件中打印新列
【发布时间】:2021-04-26 20:31:06
【问题描述】:

我正在尝试使用 pandas 读取 excel 文件中的列并使用我的输入打印一个新列。我正在尝试将 3 字母代码转换为 1 字母代码。到目前为止,我已经编写了这段代码,但是当我运行它时,它不会在最后一列中打印任何内容。

import pandas as pd
df = pd.read_csv (r'C:\Users\User\Documents\Research\seqadv.csv') 
print (df)

codes = []
for i in df['WT_RESIDUE']:
   if i == 'ALA':
    codes.append('A')
   if i == 'ARG':
    codes.append('R')
   if i == 'ASN':
    codes.append('N')
   if i == 'ASP':
    codes.append('D')
   if i == 'CYS':
    codes.append('C')
   if i == 'GLU':
    codes.append('E')
    print (codes)
codes = df ['MUTATION_CODE']
df.to_csv(r'C:\Users\User\Documents\Research\seqadv3.csv')

【问题讨论】:

  • 分配代码 = df ['MUTATION_CODE'] 应该颠倒过来。最好使用dataframe的apply方法。
  • 最后一列仍然不会显示任何内容。我不知道如何应用数据框并从 excel 文件中读取
  • 无循环:m = {'ALA': 'A', 'ARG': 'R', 'ASN': 'N', 'ASP': 'D', 'CYS': 'C', 'GLU': 'E'}df['MUTATION_CODE'] = df['WT_RESIDUE'].map(m).fillna('')
  • 控制台说:"SyntaxError: cannot assign to dict display" 这是什么意思?
  • 我看到你正在使用我的 sript :)。我认为你需要写: df['mulation_code'] = codes

标签: python pandas biopython


【解决方案1】:

执行此操作的方法是使用替换值定义字典,然后在现有列上使用 map()replace() 创建新列。两者的区别在于

  • replace() 不会更改不在字典键中的值
  • map() 将用字典的默认值(如果有的话)或 NaN(如果字典没有默认值)替换任何不在字典键中的值
df = pd.DataFrame(data={'WT_RESIDUE':['ALA', 'REMARK', 'VAL', 'CYS', 'GLU']})

codes = {'ALA':'A', 'ARG':'R', 'ASN':'N', 'ASP':'D', 'CYS':'C', 'GLU':'E'}

df['code_m'] = df['WT_RESIDUE'].map(codes)
df['code_r'] = df['WT_RESIDUE'].replace(codes)


In: df
Out: 
  WT_RESIDUE code_m  code_r
0        ALA      A       A
1     REMARK    NaN  REMARK
2        VAL    NaN     VAL
3        CYS      C       C
4        GLU      E       E

更详细的信息在这里:Remap values in pandas column with a dict

【讨论】:

  • 我试过这个,但是当我运行代码时它并没有取代 MUTATION_CODE。该列保持为空
  • 嗨,我删除了 df = pd.DataFrame(data={'WT_RESIDUE':['ALA', 'REMARK', 'VAL', 'CYS', 'GLU']}) 行,它起作用了
【解决方案2】:

写:

df['MUTATION_CODE'] = codes

【讨论】:

  • 1) 循环效率低下,并且 2) 如果 WT_RESIDUE 中有一个没有被 if 逻辑处理的值,这将不起作用。
  • 我确保包含 WT_Residue 的所有值。
猜你喜欢
  • 2020-06-21
  • 2013-02-12
  • 1970-01-01
  • 2021-10-06
  • 2015-01-30
  • 1970-01-01
  • 1970-01-01
  • 2019-03-18
  • 1970-01-01
相关资源
最近更新 更多