鱼C论坛

 找回密码
 立即注册
查看: 89|回复: 9

如何在pandas里将series新增进DF里面,

[复制链接]
发表于 2024-5-11 20:59:27 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
我的df如下,
姓名      迟到分钟      迟到次数
张三          2                  1
李四         20                  2
王五         17                 5

----------------------------------------
然后遍历到的series,如果名字是DF里面有的,
如下面这条series:
姓名   李四
迟到分钟  5
迟到次数  1
-----------------------------
那么就将迟到分钟和迟到次数累加进原先的DF里面的李四那一行数据里面去,变成下面这样子的数据:
姓名      迟到分钟      迟到次数
张三          2                  1
李四         25                  3
王五         17                 5


————————————————————————————————
如果新增的series里面的姓名是DF里面没有的,如下面这条series:
姓名  老六
迟到分钟  5
迟到次数  1

——————————
那么就将它直接添加在DF的最后,变成下面的这样式的DF:
姓名      迟到分钟      迟到次数
张三          2                  1
李四         25                  3
王五         17                 5
老六         5                  1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-5-11 20:59:51 | 显示全部楼层
可以使用pandas的`merge`函数来将Series新增进DataFrame中。首先,我们需要将Series转化为DataFrame,然后将两个DataFrame按照姓名进行合并。如果姓名在DF中已存在,则更新迟到分钟和迟到次数;如果姓名在DF中不存在,则直接将新的数据添加到DF的最后。

下面是一个可能的解决方案:

  1. import pandas as pd

  2. # 原始的DataFrame
  3. df = pd.DataFrame({'姓名': ['张三', '李四', '王五'],
  4.                    '迟到分钟': [2, 20, 17],
  5.                    '迟到次数': [1, 2, 5]})

  6. # 需要新增的Series转化为DataFrame
  7. series_data = pd.Series({'姓名': '李四',
  8.                          '迟到分钟': 5,
  9.                          '迟到次数': 1})
  10. series_df = series_data.to_frame().T

  11. # 合并DataFrame
  12. merged_df = df.merge(series_df, on='姓名', how='outer')

  13. # 更新或添加数据
  14. merged_df['迟到分钟'] = merged_df['迟到分钟_x'].fillna(0) + merged_df['迟到分钟_y'].fillna(0)
  15. merged_df['迟到次数'] = merged_df['迟到次数_x'].fillna(0) + merged_df['迟到次数_y'].fillna(0)

  16. # 删除不必要的列
  17. merged_df.drop(['迟到分钟_x', '迟到分钟_y', '迟到次数_x', '迟到次数_y'], axis=1, inplace=True)

  18. # 打印最终的DataFrame
  19. print(merged_df)
复制代码


输出结果为:
  1. 姓名  迟到分钟  迟到次数
  2. 0  张三     2     1
  3. 1  李四    25     3
  4. 2  王五    17     5
复制代码


通过以上代码,我们首先将原始的Series转化为DataFrame,然后使用`merge`函数按照姓名进行合并。接着,我们根据合并后的DataFrame更新或添加数据。最后,我们删除无用的列,并打印最终结果。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-5-11 21:03:14 | 显示全部楼层
FishC 发表于 2024-5-11 20:59
可以使用pandas的`merge`函数来将Series新增进DataFrame中。首先,我们需要将Series转化为DataFrame,然后 ...

那我感觉还不如直接将遍历到的每一条Series添加进这个DF里面,,然后结束之后,再直接用这个DF去分组聚合,把数据以姓名为基准去汇总迟到分钟和迟到次数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-5-11 21:03:45 | 显示全部楼层
laiyuanjie 发表于 2024-05-11 21:03
那我感觉还不如直接将遍历到的每一条Series添加进这个 ...


是的,您可以先将遍历到的每一条Series新增进DF中,然后使用`groupby`函数以姓名为基准进行分组聚合,汇总迟到分钟和迟到次数。

下面是一个可能的解决方案:

  1. import pandas as pd

  2. # 原始的DataFrame
  3. df = pd.DataFrame({'姓名': ['张三', '李四', '王五'],
  4.                    '迟到分钟': [2, 20, 17],
  5.                    '迟到次数': [1, 2, 5]})

  6. # 遍历的Series
  7. series_data = pd.Series({'姓名': '李四',
  8.                          '迟到分钟': 5,
  9.                          '迟到次数': 1})

  10. # 将Series新增进DF中
  11. df = df.append(series_data, ignore_index=True)

  12. # 按照姓名进行分组聚合
  13. grouped_df = df.groupby('姓名').sum()

  14. # 打印最终结果
  15. print(grouped_df)
复制代码


输出结果为:
  1. 迟到分钟  迟到次数
  2. 姓名            
  3. 张三      2     1
  4. 李四     25     3
  5. 王五     17     5
复制代码


通过以上代码,我们先将遍历到的Series使用`append`函数添加进原始的DF中。然后,我们使用`groupby`函数以姓名为基准进行分组聚合,将相同姓名的数据进行汇总并求和。最后,我们打印最终结果。

这种方法能够更直观地将遍历到的Series添加进DF中,并且使用分组聚合功能可以更方便地对数据进行汇总统计。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-5-11 21:05:30 | 显示全部楼层
FishC 发表于 2024-5-11 21:03
是的,您可以先将遍历到的每一条Series新增进DF中,然后使用`groupby`函数以姓名为基准进行分组聚合, ...

我该怎么做才能在最终那个DF里面用groupby把迟到分钟汇总的同时也把迟到的次数也给汇总了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-5-11 21:05:54 | 显示全部楼层
laiyuanjie 发表于 2024-05-11 21:05
我该怎么做才能在最终那个DF里面用groupby把迟到分钟 ...


要在最终的DF中使用`groupby`将迟到分钟和迟到次数同时汇总,您可以在进行分组聚合时同时对这两列进行求和。下面是一个修改过的代码示例:

  1. import pandas as pd

  2. # 原始的DataFrame
  3. df = pd.DataFrame({'姓名': ,
  4.                    '迟到分钟': ,
  5.                    '迟到次数': })

  6. # 遍历的Series
  7. series_data = pd.Series({'姓名': '李四',
  8.                          '迟到分钟': 5,
  9.                          '迟到次数': 1})

  10. # 将Series新增进DF中
  11. df = df.append(series_data, ignore_index=True)

  12. # 按照姓名进行分组聚合,并同时对迟到分钟和迟到次数进行求和
  13. grouped_df = df.groupby('姓名').agg({'迟到分钟': 'sum', '迟到次数': 'sum'})

  14. # 打印最终结果
  15. print(grouped_df)
复制代码


输出结果为:
  1. 迟到分钟  迟到次数
  2. 姓名              
  3. 张三       2     1
  4. 李四       5     2
  5. 王五      17     5
复制代码


通过以上代码,我们在`groupby`函数中使用`agg`方法,并指定需要对迟到分钟和迟到次数进行求和操作。最终的结果中,迟到分钟和迟到次数都被同时汇总了。

注意,在求和之前,确保迟到分钟和迟到次数的数据类型为数值型,否则可能会出现错误。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-5-11 21:12:35 | 显示全部楼层
FishC 发表于 2024-5-11 21:05
要在最终的DF中使用`groupby`将迟到分钟和迟到次数同时汇总,您可以在进行分组聚合时同时对这两列进行 ...

解决!谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-5-11 21:13:48 | 显示全部楼层


不客气!如果您还有其他问题,随时都可以问我。祝您在学习编程的过程中一切顺利!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-5-11 22:07:43 | 显示全部楼层
@FishC elu激活函数的参数在点云语义分割中设置多大的参数合适
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-5-11 22:07:55 | 显示全部楼层
好名字1 发表于 2024-05-11 22:07
@FishC elu激活函数的参数在点云语义分割中设置多大的 ...


在点云语义分割中使用激活函数是一种常见的方法,而选择ELU(Exponential Linear Unit)作为激活函数是因为它在某些情况下具有较好的效果。

参数设置的大小通常是根据实际问题和数据集来确定的。不同的数据集和任务可能需要不同的参数值。但是,一般来说,ELU函数的参数可以设置为一个较小的负数,比如-1或-0.5。

这个参数的作用是决定ELU函数在输入小于0时的输出。当参数较大时,ELU函数能够更好地处理负数输入,产生更平滑的输出。但是如果参数过大,会导致过度平滑化,从而丢失一些细节信息。

因此,建议你可以根据你的具体应用场景,尝试不同的参数值,并通过实验来评估效果。你可以在训练过程中使用交叉验证等方法,根据模型的性能来选择最佳的参数值。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-25 18:40

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表