簡體   English   中英

使用 pandas dataframe 時,如果不存在,如何添加列?

[英]When using a pandas dataframe, how do I add column if does not exist?

我是使用 pandas 的新手,並且正在編寫一個腳本,我在其中讀取 dataframe 然后對某些列進行一些計算。

有時我會有一個名為“Met”的專欄:

df = pd.read_csv(File, 
  sep='\t', 
  compression='gzip', 
  header=0, 
  names=["Chrom", "Site", "coverage", "Met"]
)

其他時候我會有:

df = pd.read_csv(File, 
  sep='\t', 
  compression='gzip', 
  header=0, 
  names=["Chrom", "Site", "coverage", "freqC"]
)

我需要對“Met”列進行一些計算,所以如果它不存在,我需要使用以下方法計算它:

df['Met'] = df['freqC'] * df['coverage'] 

有沒有辦法檢查 dataframe 中是否存在“Met”列,如果不添加?

你像這樣檢查它:

if 'Met' not in df:
    df['Met'] = df['freqC'] * df['coverage'] 

如果有興趣在方法鏈中有條件地添加列,請考慮將pipe()lambda一起使用:

df.pipe(lambda d: (
    d.assign(Met=d['freqC'] * d['coverage'])
    if 'Met' not in d else d
))

如果您從頭開始創建 dataframe,則只需將列名傳遞給pd.DataFrame()調用即可創建沒有循環的缺失列:

cols = ['column 1','column 2','column 3','column 4','column 5']
df = pd.DataFrame(list_or_dict, index=['a',], columns=cols)

或者,您可以使用get

df['Met'] = df.get('Met', df['freqC'] * df['coverage'])    

如果Met列存在,則采用該列內的值。 否則freqCcoverage會相乘。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM