熊猫:如果不存在则添加列

时间:2014-09-17 17:08:02

标签: python pandas

我是新手使用pandas并且正在编写一个脚本,我在数据框中读取,然后对某些列进行一些计算。

有时我会有一个名为“Met”的专栏:

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

Othertimes我会:

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

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

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

有没有办法检查数据框中是否存在“Met”列,如果没有添加它?

3 个答案:

答案 0 :(得分:26)

你这样检查:

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

答案 1 :(得分:2)

如果您是从头开始创建数据框,则只需将列名传递到pd.DataFrame()调用中,就可以创建缺少的列而没有循环:

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

答案 2 :(得分:0)

如果有兴趣在 method chain 中有条件地添加列,请考虑将 pipe()lambda 结合使用:

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