[英]Pandas agg function different behaviours depending on call definition
我不了解agg
行為。 請參閱以下示例和預期結果。
pd.DataFrame({'d': [{'a': 1}, {'b': 2}]}).agg(list)
Out[372]:
d
0 {'a': 1}
1 {'b': 2}
pd.DataFrame({'d': [{'a': 1}, {'b': 2}]}).agg(lambda col: list(col))
Out[373]:
d
0 {'a': 1}
1 {'b': 2}
pd.DataFrame({'d': [{'a': 1}, {'b': 2}]}).agg({'d': list})
Out[374]:
d
0 [a]
1 [b]
pd.DataFrame({'d': [{'a': 1}, {'b': 2}]}).agg({'d': lambda col: list(col)})
Out[375]:
d
0 [a]
1 [b]
預期結果是:
pd.DataFrame({'d': [list(pd.DataFrame({'d': [{'a': 1}, {'b': 2}]}).d)]})
Out[379]:
d
0 [{'a': 1}, {'b': 2}]
您可能需要另一個DataFrame
:
>>> df = pd.DataFrame({'d': [{'a': 1}, {'b': 2}]})
>>> pd.DataFrame([df.values], columns=df.columns)
d
0 [[{'a': 1}], [{'b': 2}]]
>>>
agg
無法做到這一點,它會聚合並對Y列執行X操作,它不會“聚合”值...
對於另一個示例,我將這樣做:
>>> pd.DataFrame(df.apply(lambda x: [df[x.name].values])).T.apply(lambda x: x.str[0])
d e
0 [{'a': 1}, {'b': 2}] [{'a': 1}, {'b': 2}]
>>>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.