如何在计算元素时向 pandas 数据框添加新列?
How to add a new column to a pandas dataframe while calculate the elements?
我想向 pandas df 添加一个新列,它将根据另一列进行计算。
这是 df 的快捷方式:
如果日期介于 start_date1
和 end_date1
之间,则应在期间列“0”中输出。如果日期在 start_date2
和 end_date2
之间,则输出“1”,依此类推。
有没有不用循环的方法?
感谢您的帮助:)
拉里
首先,您需要检查您的列 date
是否具有 datetime
格式。
您可以使用 df.dtypes
进行检查。如果它没有格式日期 (datetime64
),则必须将其转换为日期时间:
df['date'] = pd.to_datetime(df.date, format='%Y%m%d', errors='ignore')
请注意参数 errors='ignore'
有其风险,因此它是可选的。
现在要制作计算字段,您可以这样做:
# define function to calculate periods based on date
def calculate_period(row):
if row['date'] > start_date1 & row['date'] < end_date1:
return "0"
elif row['date'] > start_date2 & row['date'] < end_date2:
return "1"
elif row['date'] > start_date3 & row['date'] < end_date3:
return "2"
else:
return "unknown"
# apply function to create the new column
df['period'] = df.apply(calculate_period, axis=1)
如果您需要更多 period
值,您可以根据需要扩展 elif
语句。
由于缺少有关您的数据的信息。我假设 start_date1
和 end_date1
是您定义的变量。
如果这些也是列。该函数如下所示:
# define function to calculate periods based on date
def calculate_period(row):
if row['date'] > row['start_date1'] & row['date'] < row['end_date1']:
return "0"
elif row['date'] > row['start_date2'] & row['date'] < row['end_date2']:
return "1"
elif row['date'] > row['start_date3'] & row['date'] < row['end_date3']:
return "2"
else:
return "unknown"
# apply function to create the new column
df['period'] = df.apply(calculate_period, axis=1)
祝你好运。
我想向 pandas df 添加一个新列,它将根据另一列进行计算。 这是 df 的快捷方式:
如果日期介于 start_date1
和 end_date1
之间,则应在期间列“0”中输出。如果日期在 start_date2
和 end_date2
之间,则输出“1”,依此类推。
有没有不用循环的方法?
感谢您的帮助:)
拉里
首先,您需要检查您的列 date
是否具有 datetime
格式。
您可以使用 df.dtypes
进行检查。如果它没有格式日期 (datetime64
),则必须将其转换为日期时间:
df['date'] = pd.to_datetime(df.date, format='%Y%m%d', errors='ignore')
请注意参数 errors='ignore'
有其风险,因此它是可选的。
现在要制作计算字段,您可以这样做:
# define function to calculate periods based on date
def calculate_period(row):
if row['date'] > start_date1 & row['date'] < end_date1:
return "0"
elif row['date'] > start_date2 & row['date'] < end_date2:
return "1"
elif row['date'] > start_date3 & row['date'] < end_date3:
return "2"
else:
return "unknown"
# apply function to create the new column
df['period'] = df.apply(calculate_period, axis=1)
如果您需要更多 period
值,您可以根据需要扩展 elif
语句。
由于缺少有关您的数据的信息。我假设 start_date1
和 end_date1
是您定义的变量。
如果这些也是列。该函数如下所示:
# define function to calculate periods based on date
def calculate_period(row):
if row['date'] > row['start_date1'] & row['date'] < row['end_date1']:
return "0"
elif row['date'] > row['start_date2'] & row['date'] < row['end_date2']:
return "1"
elif row['date'] > row['start_date3'] & row['date'] < row['end_date3']:
return "2"
else:
return "unknown"
# apply function to create the new column
df['period'] = df.apply(calculate_period, axis=1)
祝你好运。