从您的问题中不清楚您是想要两个新的空列还是要替换现有名称。无论哪种方式,您都可以通过以下方式对 dte 执行此操作:
添加列
LN_ID LN_DT
0 1234 10/01/2020
1 4567 10/01/2020
2 8888 10/01/2020
3 9999 10/01/2020
定义新列
cols = ['new_ln_id','new_ln_dt']
和`
print(pd.concat([dte,pd.DataFrame(columns=cols)]))
这使
LN_ID LN_DT new_ln_id new_ln_dt
0 1234.0 10/01/2020 NaN NaN
1 4567.0 10/01/2020 NaN NaN
2 8888.0 10/01/2020 NaN NaN
3 9999.0 10/01/2020 NaN NaN
替换列名
df.rename(columns={"LN_ID": "new_ln_id", "LN_DT": "new_ln_dt"})
感谢您的回复,很抱歉造成混乱。我想重命名 2 列。但是,实际上,我想首先检查它是基于名为“filetype”的 unix 环境变量的 .dat 文件还是 .txt 文件。
例如:如果 filetype='TXT' 或 'DAT' 然后将输入文件说 'abc.dat' 或 'abc.txt' 读入新的 pandas 数据框并重命名 2 列。我希望这很清楚。
这就是我所做的。我创建了一个函数来检查文件类型是“dat”还是“txt”,并将文件读入 pandas 数据框,然后重命名 2 列。该函数正在加载数据,但没有根据需要重命名列。感谢有人能指出我错过了什么。
filetype=os.environ['TYPE']
print(filetype)
DAT
def load(file_type):
if file_type.lower()=="dat":
df=pd.read_csv(input_file, sep=',',engine='python')
if df.columns[0]=="LN_ID":
df.columns[0]="new_ln_id"
if df.columns[1]=="LN_DT":
df.columns[1]="new_ln_dt"
return(df)
else:
if file_type.lower()=="txt":
df=pd.read_csv("infile",sep=",",engine='python')
if df.columns[0]=="LN_ID":
df.columns[0]="new_ln_id"
if df.columns[1]=="LN_DT":
df.columns[1]="new_ln_dt"
return(df)
load(filetype)
选择
from os import listdir
from os.path import isfile, join
onlyfiles = [f for f in listdir(path) if isfile(join(path, f))]
filename = os.path.join(path, onlyfiles[0])
if filename.endswith('.txt'):
dte = pd.read_csv(filename, sep=",")
elif filename.endswith('.dat'):
dte = pd.read_csv(filename, sep=",")
dte.rename(columns={"LN_ID": "new_ln_id", "LN_DT": "new_ln_dt"})