我有一个类似的例子,类似于我的另一个问题Pandas:在多个列上使用字典映射列,但是现在,我想不直接使用列“category”的max()值,而是间接使用它来填充第四列“category_name”中的None与问题1中的情况相同,但是增加了一个包含字符串的列。
import pandas as pd
f = {'company': ['Company1', 'Company1', 'Company1', 'Company1', 'Company2', 'Company2'],
'product': ['Product A', 'Product A', 'Product F', 'Product A', 'Product F', 'Product F'],
'category': ['1', 1, '3', '2', 3, '5'],
'category_name': ['a', None, 'b', 'c', None, 'd']
}
df = pd.DataFrame(f)
此处“类别”列始终是填充的,而“类别名称”列有一些缺失值:
company product category category_name
0 Company1 Product A 1 a
1 Company1 Product A 1 None
2 Company1 Product F 3 b
3 Company1 Product A 2 c
4 Company2 Product F 3 None
5 Company2 Product F 5 d
我想再一次用值填充无/南,我想使用的逻辑是:使用列“类别”中最大值的行的列“category_name”作为列1.2的组合。
预期的结果是:
company product category category_name
0 Company1 Product A 1 a
1 Company1 Product A 1 **c**
2 Company1 Product F 3 b
3 Company1 Product A 2 c
4 Company2 Product F 3 **d**
5 Company2 Product F 5 d
-
我将非常感谢这方面的帮助。非常感谢
`
def fnx(x):
m=x["category"].max()
val=x[x["category"]==m]["
category_name"].values
x["category_name"].fillna(val[0], in
place=True)
return x
df = df.groupby(['company','product']).apply(fnx)
`
使用<code>系列的自定义函数。idxmax用于类别_name
,按最大分类
:
df['category'] = df['category'].astype(int)
def f(x):
s = x.set_index('category_name')['category'].idxmax()
x['category_name'] = x['category_name'].fillna(s)
return x
df = df.groupby(['company','product']).apply(f)
print (df)
company product category category_name
0 Company1 Product A 1 a
1 Company1 Product A 1 c
2 Company1 Product F 3 b
3 Company1 Product A 2 c
4 Company2 Product F 3 d
5 Company2 Product F 5 d
问题内容: 我正在寻找有关如何在Python中将一个范围值转换为另一范围值的想法。我正在从事硬件项目,正在从可返回一定范围值的传感器读取数据,然后使用该数据来驱动需要不同范围值的执行器。 例如,假设传感器返回的值在1到512的范围内,并且执行器由5到10的值驱动。我想要一个函数,我可以传递一个值和两个范围并取回该值映射到第二个范围。如果这样的函数被命名,则可以这样使用: 在此示例中,我希望输出为,
问题内容: 我有一本字典,看起来像这样: 我想将其应用于类似于以下内容的数据框的列: 我怎样才能最好地做到这一点?出于某种原因,与此相关的谷歌搜索术语仅向我显示了有关如何根据字典创建列的链接,反之亦然 问题答案: 你可以使用。例如: 或直接在上,即。
我使用的是JPA,在我的DB中我有一个表,列为:id、firstname和firstAndLastname 所以我做了一个来映射数据,我可以从另一个表中获取,但是我没有持久化它,因为DB中没有列lastname。 如何存储在列中,该列是firstname和lastname的串联,并存储在特定的列中,例如:firstname:John,lastname:Doe=>firstAndLastname:J
我有一个数据帧,其中一列中具有值。我想将此 值替换为其他列的相同组合的“类别”的最大值。 示例:熊猫数据帧 我想将3中的值替换为唯一组合(1.2列组)此列的max()值。预期结果如下所示: 我尝试过的:我把1。2.列(“公司产品”)获取3的最大值()。列建立一个字典'类别'。(基于GroupBy结果到列表字典的思想) 我得到这个判决(显示每个组合的最大类别值): 现在我想用字典中每个组合的最大值替
我有一个字典,看起来像这样: 我想将其应用于数据帧的“col1”列,类似于: 得到: 我怎样才能做到最好?出于某种原因,谷歌搜索与此相关的术语只会向我显示有关如何从dicts生成列的链接,反之亦然:-/
问题内容: 我需要基于Pandas数据框中的另一列的值来设置一列的值。这是逻辑: 我无法做到这一点,我想要做的就是简单地创建一个具有新值的列(或更改现有列的值:任何一个都对我有用)。 如果我尝试运行上面的代码,或者将其编写为函数并使用apply方法,则会得到以下信息: 问题答案: 一种方法是将索引与配合使用。 例 在没有示例数据框的情况下,我将在此处进行补充: 假设您想 创建一个新列 ,除wher