Jac*_*ley 5 python python-3.x pandas
我是Python和Pandas的新手,并试图弄清楚如何进行简单的split-join-apply.我遇到的问题是我在所有数据帧的顶部得到一个空白行我从Pandas的应用函数回来了,我不知道为什么.谁能解释一下?
以下是演示问题的最小示例,而不是我的实际代码:
sorbet = pd.DataFrame({
'flavour': ['orange', 'orange', 'lemon', 'lemon'],
'niceosity' : [4, 5, 7, 8]})
def calc_vals(df, target) :
return pd.Series({'total' : df[target].count(), 'mean' : df[target].mean()})
sorbet_grouped = sorbet.groupby('flavour')
sorbet_vals = sorbet_grouped.apply(calc_vals, target='niceosity')
Run Code Online (Sandbox Code Playgroud)
如果我那么print(sorted_vals)我得到这个输出:
mean total
flavour <--- Why are there spaces here?
lemon 7.5 2
orange 4.5 2
[2 rows x 2 columns]
Run Code Online (Sandbox Code Playgroud)
比较这个print(sorbet):
flavour niceosity <--- Note how column names line up
0 orange 4
1 orange 5
2 lemon 7
3 lemon 8
[4 rows x 2 columns]
Run Code Online (Sandbox Code Playgroud)
造成这种差异的原因是什么?我该如何解决?
unu*_*tbu 11
groupby/apply操作返回的是一个具有命名索引的新DataFrame.该名称对应于原始DataFrame分组的列名称.
名称显示在索引上方.如果将其重置为None,则该行将消失:
In [155]: sorbet_vals.index.name = None
In [156]: sorbet_vals
Out[156]:
mean total
lemon 7.5 2
orange 4.5 2
[2 rows x 2 columns]
Run Code Online (Sandbox Code Playgroud)
请注意,这name很有用 - 我不建议删除它.该名称允许您通过名称而不仅仅是数字来引用该索引.
如果您希望索引是列,请使用reset_index:
In [209]: sorbet_vals.reset_index(inplace=True); sorbet_vals
Out[209]:
flavour mean total
0 lemon 7.5 2
1 orange 4.5 2
[2 rows x 3 columns]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2089 次 |
| 最近记录: |