我正在创建一个脚本,用户可以在其中输入* 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


该文件具有两个必填列filenamecategory,以及默认列type。如果用户输入的是:

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"


但是,如果某些行没有值怎么办?这些也应被视为具有默认值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)

关于python - 如何为 Pandas 数据框假设“默认列”?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47785605/

10-16 14:50