我有一个数据框,其中的条目具有相同的含义,我想将它们放在同一行(和列)中。我的模拟df:
my = pd.DataFrame(
{'fruit': ['Apple', 'Banana', 'Pomme', 'aeble', 'Banan', 'Orange', 'Apelsin'],
'bites': [1, 2, 3, 1, 2, 3, 4]})
Run Code Online (Sandbox Code Playgroud)
以及我想要的是:
我最接近的是
my.loc['Apple'] +=my.loc['Pomme'] += my.loc['aeble']
Run Code Online (Sandbox Code Playgroud)
但我想知道是否有更简单的方法。
如果你有一些dict映射所有fruit值一种语言,你可以使用groupby和map与AGG功能join和sum:
d = {'Apple': 'Apple',
'Banana': 'Banana',
'Pomme': 'Apple',
'aeble': 'Apple',
'Banan': 'Banana',
'Orange': 'Orange',
'Apelsin': 'Orange'
}
my.groupby(my['fruit'].map(d)).agg({'fruit': lambda x: ', '.join(x),
'bites': 'sum'})
Run Code Online (Sandbox Code Playgroud)
[出]
fruit bites
fruit
Apple Apple, Pomme, aeble 5
Banana Banana, Banan 4
Orange Orange, Apelsin 7
Run Code Online (Sandbox Code Playgroud)
帮助生成映射的一种方法dict是使用该googletrans软件包:
from googletrans import Translator
translator = Translator()
d = {x.origin: x.text for x in translator.translate(my['fruit'].unique().tolist())}
Run Code Online (Sandbox Code Playgroud)
[出]
{'Apple': 'Apple',
'Banana': 'Banana',
'Pomme': 'Apple',
'aeble': 'aeble',
'Banan': 'Banana',
'Orange': 'Orange',
'Apelsin': 'Orange'}
Run Code Online (Sandbox Code Playgroud)
如您所见,它不是完美的,但是可以让您获得先机,而不是完全手动创建。
| 归档时间: |
|
| 查看次数: |
56 次 |
| 最近记录: |