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
我想在数据框中添加一个新列。新列取决于一些规则。
这是我的代码:
#!/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