pandas read_csv 通过标准输入问题添加属性

pandas read_csv add attributes by stdin issue

我想在数据框中添加一个新列。新列取决于一些规则。

这是我的代码:

#!/usr/bin/python3.6
# coding=utf-8

import sys
import pandas as pd
import numpy as np
import io
import csv


df = pd.read_csv(sys.stdin,sep=',',encoding='utf-8',engine="python")

col_0 = check
df['df_cal'] = df.groupby(col_0)[col_0].transform('count') 
df['status'] = np.where(
                    df['df_cal'] > 1,'change',
                    'New')

df = df.drop_duplicates(
        subset=df.columns.difference(['keep']),keep = False)
df = df[(df.keep == '2')]
df.drop(['keep','df_cal'],axis = 1,inplace = True)

# print(sys.stdin)
df.to_csv(sys.stdout,encoding='utf-8',index = None)

csv 样本:

VIP_number,keep
ab1,1
ab1,2
ab2,2
ab3,1

当我尝试运行这段代码时,我这样写命令:

python3.6 nifi_python.py < test.csv check = VIP_number

我收到错误:

name 'check' is not defined

这仍然行不通,因为我不知道如何通过标准输入将列名输入 col_0。 col_0 应该是 'VIP_number'。我不想对列名进行硬编码,因为脚本将在下次使用,但列不同。

如何通过标准输入在数据框中添加新列? 非常感谢任何帮助。

#!/usr/bin/python3.6
# coding=utf-8

import sys
import pandas as pd
import numpy as np
import io
import csv

if len(sys.argv) < 2:
    print( "Usage:  nifi_python.py check=<column>"
    sys.exit(1)

df = pd.read_csv(sys.stdin,sep=',',encoding='utf-8',engine="python")

col_0 = sys.argv[1].split('=')[1]

...
python nifi_python.py check=VIP_number < test.csv