如何根据列中的内容自动填充Pandas中的行?

2024-06-16 10:41:27 发布

您现在位置:Python中文网/ 问答频道 /正文

在Python3和pandas中,有一个数据框,其中有几十个关于食物特性的列和行。总结如下:

alimentos = pd.read_csv("alimentos.csv",sep=',',encoding = 'utf-8')
alimentos.reset_index()
index   alimento    calorias
0   0   iogurte     40
1   1   sardinha    30
2   2   manteiga    50
3   3   maçã        10
4   4   milho       10

“alimento”(食品)一栏中有“iogurte”、“sardinha”、“manteiga”、“maçã”和“milho”等行,它们是食品名称。你知道吗

我需要在这个数据框中创建一个新的列,它将告诉我们什么是食物。我给它起名叫“classificacao”

alimentos['classificacao'] = ""
alimentos.reset_index()
index   alimento    calorias    classificacao
0   0   iogurte     40  
1   1   sardinha    30  
2   2   manteiga    50  
3   3   maçã        10  
4   4   milho       10 

根据“alimento”列中的内容,我想自动填充“classificacao”列中的行

例如,在查找“iogurte”时,填充->;“laticino”。当找到“撒丁岛”->;“佩克斯”。找到“manteiga”->;“gordura动物”。当找到“maçã”->;“fruta”时。找到“米尔霍”->;“麦片”

请问,有没有办法在我找到这些字符串时自动填充行?你知道吗


Tags: csv数据gtindex食物resetmaclassificacao
1条回答
网友
1楼 · 发布于 2024-06-16 10:41:27

如果在“alimento”列中有所有可能值的映射,您只需创建一个字典并使用.map(d),如下所示:

df = pd.DataFrame({'alimento': ['iogurte','sardinha', 'manteiga', 'maçã', 'milho'],  
                   'calorias':range(10,60,10)})

d = {"iogurte":"laticinio", "sardinha":"peixe", "manteiga":"gordura animal", "maçã":"fruta", "milho": "cereal"}

df['classificacao'] = df['alimento'].map(d)

然而,在现实生活中,我们通常无法映射dict中的所有内容(因为异常值是千载难逢的,错误的输入等等),在这种情况下,上面的内容将在“classificacao”列中返回NaN。这可能会导致一些问题,因此请考虑设置一个默认值,例如“Other”或“Unknown”。除此之外,只需在map(d)之后附加.fillna("Other")。你知道吗

相关问题 更多 >