将 pandas 数据帧与 apply(lambda) 的结果连接起来,其中 lambda 返回另一个数据帧

2024-04-24

数据帧在列中存储一些值,将这些值传递给函数,我得到另一个数据帧。我想将返回的数据帧的列连接到原始数据帧。

我尝试做类似的事情

i = pd.concat([i, i[['cid', 'id']].apply(lambda x: xy(*x), axis=1)], axis=1) 

但它不起作用并出现错误:

ValueError: cannot copy sequence with size 2 to array axis with dimension 1

所以我这样做了:

def xy(x, y):
    return pd.DataFrame({'x': [x*2], 'y': [y*2]})

df1 = pd.DataFrame({'cid': [4, 4], 'id': [6, 10]})
print('df1:\n{}'.format(df1))


df2 = pd.DataFrame()
for _, row in df1.iterrows():
    nr = xy(row['cid'], row['id'])
    nr['cid'] = row['cid']
    nr['id'] = row['id']
    df2 = df2.append(nr, ignore_index=True)

print('df2:\n{}'.format(df2))

Output:

df1:
   cid  id
0    4   6
1    4  10

df2:
   x   y  cid  id
0  8  12    4   6
1  8  20    4  10

该代码看起来不太好,并且应该运行缓慢。

有没有 pandas/pythonic 方法可以正确且快速地工作?

蟒蛇2.7


Option 0
最直接与pd.DataFrame.assign。不太具有普遍性。

df1.assign(x=df1.cid * 2, y=df1.id * 2)

   cid  id  x   y
0    4   6  8  12
1    4  10  8  20

Option 1
Use pd.DataFrame.join添加新列
这显示了如何在使用后连接新列apply with a lambda

df1.join(df1.apply(lambda x: pd.Series(x.values * 2, ['x', 'y']), 1))

   cid  id  x   y
0    4   6  8  12
1    4  10  8  20

Option 2
Use pd.DataFrame.assign添加新列 这显示了如何在使用后连接新列apply with a lambda

df1.assign(**df1.apply(lambda x: pd.Series(x.values * 2, ['x', 'y']), 1))

   cid  id  x   y
0    4   6  8  12
1    4  10  8  20

Option 3
但是,如果你的函数实际上只是乘以2

df1.join(df1.mul(2).rename(columns=dict(cid='x', id='y')))

Or

df1.assign(**df1.mul(2).rename(columns=dict(cid='x', id='y')))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 pandas 数据帧与 apply(lambda) 的结果连接起来,其中 lambda 返回另一个数据帧 的相关文章

  • 参数数量在编译时确定的 Lambda 函数

    我想声明一个带有 N 个参数的 lambda 函数 其中 N 是模板参数 就像是 template
  • 检测计算机何时解锁 Windows

    我用过这个优秀的方法 https stackoverflow com questions 20733441 lock windows workstation using python 20733443锁定 Windows 计算机 那部分工作
  • Python 如何使用 ExcelWriter 写入现有工作表

    我正在尝试使用 ExcelWriter 将一些信息写入 添加到包含多个工作表的工作簿中 当我第一次使用该功能时 我正在使用一些数据创建工作簿 在第二次通话中 我想将一些信息添加到工作簿中不同位置的所有工作表中 def Out Excel f
  • 如何删除Python字符串的最后一个utf8字符

    我有一个包含 utf 8 编码文本的字符串 我需要删除最后一个 utf 8 字符 到目前为止我做到了 msg msg 1 但这只会删除最后一个字节 只要最后一个字符是 ASCII 代码 它就可以工作 当最后一个字符是多字节字符时 它不再起作
  • pyspark 中的 Pandas UDF

    我正在尝试在 Spark 数据帧上填充一系列观察结果 基本上我有一个日期列表 我应该为每个组创建缺失的日期 在熊猫中有reindex函数 这是 pyspark 中不可用的 我尝试实现 pandas UDF pandas udf schema
  • Spark Scala 将列从一个数据帧复制到另一个数据帧

    我有一个原始数据框的修改版本 我在其上进行了聚类 现在我想将预测列恢复为原始 DF 索引没问题 因此匹配 我该怎么做 使用这段代码我得到一个错误 println Predicted dfWithOutput show println Ori
  • 如何限制 sympy FiniteSet 包含符号

    我对 sympy 还很陌生 我尝试使用 linsolve 求解线性方程组 这产生了一个可以用以下两行重现的解决方案 d symbols d solution sets FiniteSet d 1 d 4 d 5 d 我的解决方案遵循限制 即
  • 将数据框中重叠的范围合并到唯一的组中

    我有一个 n 行 3 的数据框 df lt data frame start c 178 400 983 1932 33653 end c 5025 5025 5535 6918 38197 group c 1 1 2 2 3 df sta
  • Pandas Dataframe 中 bool 值的条件前向填充

    问题 如何转发 fill boolTruepandas 数据框中的值 如果是当天的第一个条目 True 到一天结束时 请参阅以下示例和所需的输出 Data import pandas as pd import numpy as np df
  • 使用基于正则表达式的部分匹配来选择 Pandas 数据帧的子数据帧

    我有一个 Pandas 数据框 它有两列 一列 进程参数 列 包含字符串 另一列 值 列 包含相应的浮点值 我需要过滤出部分匹配列 过程参数 中的一组键的子数据帧 并提取与这些键匹配的数据帧的两列 df pd DataFrame Proce
  • 协方差矩阵的对角元素不是 1 pandas/numpy

    我有以下数据框 A B 0 1 5 1 2 6 2 3 7 3 4 8 我想计算协方差 a df iloc 0 values b df iloc 1 values 使用 numpy 作为 cov numpy cov a b I get ar
  • Pandas loc 有条件的替代方案

    我计划提高非 Pandas 开发人员的可读性 我有以下内容workingPython 代码使用 loc new value stackoverflow s query nbc SUGGESTED suggested QUERY query
  • 在 NetworkX 中使边缘更粗

    student id 0 1 2 3 4 5 6 7 8 9 10 11 12 0 131X1319 1 14 6 16 1 10 8 15 15 17 15 18 16 1 13212YX3 1 1 4 8 11 9 14 7 0 3 0
  • 将不均匀的层次列表转换为数据框

    我认为还没有有人问过这个问题 但是有没有一种方法可以将具有多个级别和不均匀结构的列表的信息组合成 长 格式的数据帧 具体来说 library XML library plyr xml inning lt http gd2 mlb com c
  • 如何替换 pandas 数据框列中的重音符号

    我有一个数据框dataSwiss其中包含瑞士城市的信息 我想用普通字母替换带有重音符号的字母 这就是我正在做的 dataSwiss Municipality dataSwiss Municipality str encode utf 8 d
  • ipython/ pylab/ matplotlib安装和初始化错误

    我在 OS X El Captain 上安装了 matplotlib anaconda ipython 然而 即使在尝试以所有可能的方式设置环境变量之后 我仍无法启动 ipython shell pylab 版本 这是错误 ImportEr
  • Pandas:merge_asof() 对多行求和/不重复

    我正在处理两个数据集 每个数据集具有不同的关联日期 我想合并它们 但因为日期不完全匹配 我相信merge asof 是最好的方法 然而 有两件事发生merge asof 不理想的 数字重复 数字丢失 以下代码是一个示例 df a pd Da
  • Shiny:动态数据框构建; renderUI、观察、reactiveValues

    我认为如何使用 Shiny 的 renderUI 功能动态子集数据的问题经常出现 但我很难理解何时使用 renderUI 带有 uiOutput 而不是其他功能 包括观察 反应 反应值甚至条件面板 我想构建一个完全交互式的数据框架 其中每个
  • 如何计算 pandas 数据帧上的连续有序值

    我试图从给定的数据帧中获取连续 0 值的最大计数 其中包含来自 pandas 数据帧的 id date value 列 如下所示 id date value 354 2019 03 01 0 354 2019 03 02 0 354 201
  • Python Selenium:如何在文本文件中打印网站上的值?

    我正在尝试编写一个脚本 该脚本将从 tulsaspca org 网站获取以下 6 个值并将其打印在 txt 文件中 最终输出应该是 905 4896 7105 23194 1004 42000 放置的动物 的 HTML span class

随机推荐