首页 > 编程问答 >在python中使用变量引用Panda列名称

在python中使用变量引用Panda列名称

时间:2024-07-31 09:36:31浏览次数:10  
标签:python django pandas dataframe

我正在尝试编写一个函数来简化我的代码,因此我传递了包含列名称的变量。 它适用于 Django 应用程序,调试器不会对我的错误所在提供任何反馈,只是“内部服务器错误”。

我的代码工作正常,不是作为函数编写的:

  df_trips['trip_time_prep_starts'] = df_trips["trip_time_prep_starts"].map(str)
  df_trips.trip_time_prep_starts = pd.to_datetime(df_trips.trip_time_prep_starts)

  df_trips['trip_time_left_house'] = df_trips['trip_time_left_house'].map(str)
  df_trips.trip_time_left_house = pd.to_datetime(df_trips.trip_time_left_house)
  
  df_trips['stage1_duration']=(df_trips['trip_time_left_house']-df_trips['trip_time_prep_starts']).dt.total_seconds()

作为函数编写,传递以下变量:

stage_name="stage1_duration"
stage_start="trip_time_prep_starts"
stage_end="trip_time_left_house"

我的函数:

def calc_stage_duration(df_trips, stage_name, stage_start, stage_end):

  df_trips[stage_start] = df_trips[stage_start].map(str)
  df_trips.[stage_start] = pd.to_datetime(df_trips.[stage_start])

  df_trips[stage_end] = df_trips[stage_end].map(str)
  df_trips.[stage_end] = pd.to_datetime(df_trips.[stage_end])

  df_trips[stage_name]=(df_trips[stage_end]-df_trips[stage_start]).dt.total_seconds()

我找不到我的错误,我不清楚括号和句点的正确使用,例如 df_trip.[stage_end] 与 df_trips[stage_end]


你的代码中的问题在于你使用了 df_trips.[column_name] ,这是错误的语法。 要访问 Pandas DataFrame 的列,你应该使用 df_trips[column_name]

以下是你的函数的更正版本:

def calc_stage_duration(df_trips, stage_name, stage_start, stage_end):

  df_trips[stage_start] = df_trips[stage_start].astype(str)
  df_trips[stage_start] = pd.to_datetime(df_trips[stage_start])

  df_trips[stage_end] = df_trips[stage_end].astype(str)
  df_trips[stage_end] = pd.to_datetime(df_trips[stage_end])

  df_trips[stage_name] = (df_trips[stage_end] - df_trips[stage_start]).dt.total_seconds()

  return df_trips

在此更正中:

  • 我们使用 df_trips[column_name] 来访问和修改 DataFrame 的列。
  • 我们使用 .astype(str) 代替 .map(str) 来将列转换为字符串,因为它通常更有效。
  • 我们将修改后的 DataFrame 返回,以便函数调用者可以访问更新后的数据。

以下是如何使用此函数的示例:

stage_name = "stage1_duration"
stage_start = "trip_time_prep_starts"
stage_end = "trip_time_left_house"

df_trips = calc_stage_duration(df_trips, stage_name, stage_start, stage_end)

现在,此函数应按预期计算阶段持续时间并将其存储在指定列中。

标签:python,django,pandas,dataframe
From: 78814139

相关文章

  • 如何在 Pyqt5 Python 中实现 QTableWidget 列过滤器中的搜索栏?
    我使用pyqt5创建了一个QTableWidget,并成功地在表格小部件的每一列中添加了过滤选项,并使用堆栈溢出上可用的答案之一。过滤器按预期工作,但我想在顶部的过滤器中添加搜索栏来搜索值。在我的python脚本中,过滤器中可能有大约50多个唯一值。因此,如果有一种方法可以在过滤器......
  • Python - Abstract Base classes
    Wehaveseenthatifwehavetodefineagroupofclassesthathavesimilarfeaturesandshowcommonbehavior,wecandefineabaseclassandtheninherittheclassesfromit.Inthederivedclasses,wehavethechoicetoeitherusethebaseclassversion......
  • python3 unittest+BeautifulReport单个进程输出多个测试报告
    最近一个项目中需要由于输出的案例内容非常多(上万条),导致BeautifulReport输出的报告内容非常大(几百兆)。浏览器无法正常处理这么大的测试报告,就算打开了,也不方便阅读和处理,因此需要将报告分成多个输出。经修改代码,发现单个进程内输出多个测试报告出现问题:第一个测试报告能正常数据......
  • 具有自引用的类装饰器的 Python 类型提示
    我的最终目标是编写一个系统来轻松记录函数调用(特别是类方法)。我首先编写一个带有包装方法的类Loggable,该方法允许我装饰子类方法并记录它们的调用|||现在我可以编写子类并记录它们的调用:Param=ParamSpec("Param")RetType=TypeVar("RetType")CountType=......
  • Pandas:样式列标题
    我正在使用pandasstyler根据列标题的名称为某些列提供背景颜色。虽然这按预期工作,但列标题的背景颜色不会改变。这是我的脚本中应用样式的部分:defhighlight_col(x):ifx.nameinadded_columns:return['background-color:#67c5a4']*x.shape[0]......
  • 有没有办法根据 Pandas GroupBy 的计数在 2 个数据帧之间重复分配值?
    我有两个结构相同但形状和值不同的Pandas数据框:importpandasaspddataframe_1=pd.DataFrame({'customer_id':['id1','id2','id3','id4','id5','id6'],'gender':[......
  • 如何在 pandas 中设置列​​标题的样式?
    假设我有一个带有列标题“A”和“B”的2x2DataFrame:importpandasaspddata_style=[['background-color:#fdfd96',''],['','background-color:#fdfd96']]df=pd.DataFrame([[1,2],[3,4]],columns=["A",&qu......
  • 如何在for循环中使用curve_fit函数在python中一次性创建多个回归?
    简而言之,我有两个矩阵,一个称为t,另一个称为y。每个都有7列。假设它们被称为a、b、c、d、e、f和g。我想要的是从a对a、b对b、...、g对g这两个矩阵进行回归。我已经设法使我的算法使用curve_fit对一列进行回归一次。但我真正希望的是它能够一次性完成7个回归......
  • 激活虚拟环境会让python消失?
    VisualStudioCode终端的屏幕截图如屏幕截图所示,python在Powershell中运行得很好。然后我在E:\DrewFTCAPI\ftcapivenv激活虚拟环境,然后python就消失了。不仅没有消失,它不运行任何东西,也不产生任何输出。我至少预计会出现某种类型的"python"i......
  • Python 3.6 中的相互递归类型,使用命名元组语法
    我正在尝试实现图的节点和边。这是我的代码:fromtypingimportNamedTuple,ListclassNode(NamedTuple):name:stredges:List[Edge]classEdge(NamedTuple):src:Nodedest:Node这会引发错误,因为创建Edge时未定义Node类型。......