Python 如何假设一个;默认列";对于熊猫数据帧?
我正在创建一个脚本,用户可以通过该脚本输入*CSV文件。这个CSV文件有几个“必需列”(如果这些列不存在,就会抛出错误)和“默认列”(如果没有提供这些列,我假设它们有一个默认值)。我不知道如何处理后者 下面是一个具体的例子: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
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)