Python 如何假设一个;默认列";对于熊猫数据帧?

Python 如何假设一个;默认列";对于熊猫数据帧?,python,pandas,csv,Python,Pandas,Csv,我正在创建一个脚本,用户可以通过该脚本输入*CSV文件。这个CSV文件有几个“必需列”(如果这些列不存在,就会抛出错误)和“默认列”(如果没有提供这些列,我假设它们有一个默认值)。我不知道如何处理后者 下面是一个具体的例子: import pandas as pd df = pd.read_csv("inputfile1.csv") print(df) filename category type 0 records1.txt 3

我正在创建一个脚本,用户可以通过该脚本输入*CSV文件。这个CSV文件有几个“必需列”(如果这些列不存在,就会抛出错误)和“默认列”(如果没有提供这些列,我假设它们有一个默认值)。我不知道如何处理后者

下面是一个具体的例子:

import pandas as pd

df = pd.read_csv("inputfile1.csv")
print(df)

    filename           category   type
0   records1.txt       3          A1
1   records2.txt       4          A1
2   records7.txt       5          A1
3   records8.txt       1          C4
此文件有两个必填列
文件名
类别
,以及一个默认列
类型
。如果用户有输入:

import pandas as pd

df = pd.read_csv("inputfile1b.csv")
print(df)

    filename           category  
0   records1.txt       3         
1   records2.txt       4         
2   records7.txt       5          
3   records8.txt       1        
我假设
type
对于每一行都有值
A1

如何设置这些默认值?一种尝试是检查列是否存在;如果不是,则以某种方式使这些值
A1

if 'type' not in df.columns:
    df.type = "A1" 
import pandas as pd

df = pd.read_csv("inputfile1c.csv")
print(df)

    filename           category   type
0   records1.txt       3                  ### this is A1
1   records2.txt       4          A1
2   records7.txt       5                  ### this is A1
3   records8.txt       1          C4
但是,如果某些行没有值,我该怎么办?这些行也应被视为具有默认值的行
A1

if 'type' not in df.columns:
    df.type = "A1" 
import pandas as pd

df = pd.read_csv("inputfile1c.csv")
print(df)

    filename           category   type
0   records1.txt       3                  ### this is A1
1   records2.txt       4          A1
2   records7.txt       5                  ### this is A1
3   records8.txt       1          C4

fillna
将起作用

if 'type' not in df:
    df['type'] = "A1"
else:
    df['type'].fillna('A1', inplace=True)

你可以利用字典做同样的事情

# Create a default dictionary with column names and respective default values
default_dict = {'col1':1,'col2':2}

# Now read the input file
df = pd.read_csv("inputfile1b.csv")

# After this find list of columns missing in df
missing_cols = list(set(df_default.columns) - set(df.columns))

# Add the missing columns with default values

for i in missing_cols:
    df[i] = default_dict[i]

您可以将它们视为缺少的值,请尝试以下操作:
df.type.fillna('A1',inplace=True)