python - 使用将读取的值应用回原始数据帧?
问题描述
我提前申请,因为这个问题部分是技术性的,部分是理解更好的 pandas/python 设计。
这就是我想要做的。给出这个数据:
a,b
1,2
1,3
2,4
2,5
我想创建第三列['c'],其中包含基于每列和A分组的一些数据。我这样做的方式是:
for item in df.a.unique():
dataSetToProcess = df.loc[df['a'] == item][['a', 'b']]
dataSetToProcess['c'] = dataSetToProcess.apply(MyFunction)
使用这种方法,我对 C 有一个价值,但它只在 dataSetToProcess 上,它不是主 DF 的一部分。我想在主 DF 中提供 C 的值。
我的预期结果(为简单起见,假设每组 A 列只是平均该组本身并将其添加到 C 列):
a,b,c
1,2, 2.5
1,3, 2.5
2,4, 4.5
2,5, 4.5
我的两个想法是获取每个结果并将 A、B 列映射到原始 DF,但想知道是否有更简单/更清洁的方法?
解决方案
假设您有两个数据框,df1
并且dataSetToProcess
:
df1 = pd.DataFrame({"a": [1, 1, 2, 2], "b": [2, 3, 4, 5]})
dataSetToProcess = pd.DataFrame({"a": [1, 2], "c": [2.5, 4.5]})
print(df1)
print(dataSetToProcess)
a b
0 1 2
1 1 3
2 2 4
3 2 5
a c
0 1 2.5
1 2 4.5
然后:
df1 = df1.merge(dataSetToProcess, on="a")
print(df1)
印刷:
a b c
0 1 2 2.5
1 1 3 2.5
2 2 4 4.5
3 2 5 4.5
从那里,您可以根据 和 列计算a
变量。b
c
推荐阅读
- android - 菜单项不会在旋转时被破坏 - kotlin
- angular - 如何有条件地将文本与 ngStyle 对齐
- vba - 存在多个时选择收件箱
- framer-motion - 使用共享布局制作动画时,Framer Motion 文本会失真
- apache - 将特定文件夹重定向到子域但没有文件夹名称
- javascript - 如何在页面加载前从 API 获取数据到动态 API URL(空值问题)
- java - 在 MySQL 数据库中已有数据模型时创建实体
- c# - 在 ElapsedEventHandler 中获取日期和时间
- r - 如何在 R 中呈现 pdf 报告?
- swift - Web3Swift 与自定义 ABI 的交互