我有一个pandas数据帧,其中有几列数据要传递给MSSQL。我的主键是一个在2014年3月27日改变了格式的文件名。我正在我的数据帧中以编程方式创建这个文件名,但我需要考虑两个版本(一个是3月27日之前的格式,包括3月27日创建的文件,另一个是3月27日之后的所有文件)。在
如何遍历每一行并有条件地设置filename列?我的dataframe中有一个datetime列,它具有正确的datetime格式。我只是不知道如何比较更改日期,然后有条件地创建df[FileName]。在
感谢@EdChum!在
dateOfChange = datetime.date(2014, 03, 27)
df.loc[df['DateTime'] > dateOfChange, 'FileName'] = df.BAC.map(str) + '_' + df.Year.map("{:04}".format, str) + df.Month.map("{:02}".format, str) + df.Day.map("{:02}".format, str) + df.Hour.map("{:02}".format, str) + df.Minute.map("{:02}".format, str) + df.Second.map("{:02}".format, str) + "_" + df.NumberDialed.map(str)
df.loc[df['DateTime'] <= dateOfChange, 'FileName'] = df.BAC.map(str) + '_' + df.Year.map("{:04}".format, str) + df.Month.map("{:02}".format, str) + df.Day.map("{:02}".format, str) + df.Hour.map("{:02}".format, str) + df.Minute.map("{:02}".format, str) + df.Second.map("{:02}".format, str)
您不必迭代,只需过滤要分配给的行,并将其分配给所有行。这将更快地利用熊猫的力量:
我们在这里使用
loc
来执行标签索引,请参阅文档:http://pandas.pydata.org/pandas-docs/stable/indexing.html#selection-by-label相关问题 更多 >
编程相关推荐