[英]Pandas Dataframe - merge data when a column does not exist in one 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
列存在,則采用該列內的值。 否則freqC
和coverage
會相乘。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.