当前位置: 首页 > 知识库问答 >
问题:

如何一次将一个函数应用到熊猫数据帧中的多个列

云宏儒
2023-03-14

我经常处理格式不好的数据(即数字字段不一致等)

可能还有其他方法,我不知道,但我格式化数据帧中单个列的方法是使用函数并将该列映射到该函数。

format = df.column_name.map(format_number)

问题:1-如果我有一个包含50列的数据框,并且想要将该格式应用于多个列,等等列1, 3, 5, 7, 9,

你能去吗

format = df.1,3,5,9.map(format_number)

...这样我可以格式化所有的数字列在一行?

共有2个答案

姚和顺
2023-03-14

您可以像这样使用apply

df.apply(lambda row: format_number(row), axis=1)

您需要在format\u number函数中指定列:

def format_number(row):
    row['Col1'] = doSomething(row['Col1']
    row['Col2'] = doSomething(row['Col2'])
    row['Col3'] = doSomething(row['Col3'])

这不像@BrenBarn的回答那么优雅,但它的一个优点是数据框被修改到位,所以你不需要再次分配列

东郭腾
2023-03-14

您可以执行df['Col1','Col2','Col3']]。应用映射(格式\编号)。请注意,这将返回新的列;它不会修改现有的数据帧。如果您想将值放回原始值,则必须执行df[['Col1','Col2','Col3']]=df[['Col1','Col2','Col3']]。应用映射(格式\编号)

 类似资料:
  • 我对熊猫很陌生,我想知道如何同时给熊猫添加多个列。感谢您的帮助。理想情况下,我想一步到位,而不是多步重复。。。

  • 我有两个Dataframes一个与日期集(df1)和另一个与emp_ids集(df2)。我试图创建一个新的Dataframe,这样df2中的每个emp_id都被标记为df1中的每个日期。 下面给出了我的数据帧的外观 df1 df2 预期产出: 我将日期列转换为字符串,并尝试执行以下操作,但返回的数据框为空 我尝试做

  • 我想应用一个自定义函数并创建一个名为population2050的派生列,该列基于数据框中已经存在的两列。 当我运行上面的代码时,我得到一个错误。我是否没有正确使用“应用”功能?

  • 提前感谢您的阅读。 我有一个数据帧: 我想应用一个例程,对于中的每个元素,检查是否匹配,如果是,则对中的值应用一些函数。 例如,使用以下占位符函数: 我写道: 我的预期产出是: 相反,我得到: 该函数仅应用于具有的行,但以牺牲其他行(它们都变成)为代价。我假设其他行将保持不变;显然情况并非如此。 你能解释一下我如何在不删除列中的所有信息的情况下实现我想要的输出吗?我相信答案可能在于,但我没能做到这

  • 我有两个系列和具有相同的(非连续的)索引。如何将和组合为DataFrame中的两列,并将其中一个索引保留为第三列?

  • 我尝试了这个,但是我有一个混乱的前景 {“类型”:“特征集合”,“特征”:[{“类型”:“特征”,“几何”:{“类型”:“点”,“坐标”:[-73.87057,40.773757]},“属性”:{“tpep_dropoff_datetime”:“2013-04-02T16:00:00.000”,“行程距离”:“11.279999999999999”,“dropoff_经度”:“-73.870570