我的数据框如下
Wash_Month Wash_Day
0 3 2
1 4 3
预期的产量是
#d={'Wash_Month':'Wash_Month/Wash_Day','Wash_Day':'Wash_Month/Wash_Day'}
#df.T.astype(str).groupby(d).agg(','.join)
Out[329]:
0 1
Wash_Month/Wash_Day 3,2 4,3
如您所见,我首先进行转置T
。
如果我们用groupby
axis=1
并移除T
,我希望得到同样的结果。
df.astype(str).groupby(d,axis=1).agg(','.join)
Out[330]:
Wash_Month/Wash_Day
0 Wash_Month,Wash_Day
1 Wash_Month,Wash_Day
输出与预期输出不匹配。在{{1}和agg
中,join
的{{1}}上是否存在特定问题
由于groupby
之类的其他axis=1
功能正常运行
agg
关于为什么结果变为浮动而不是str检查link
感谢您的帮助:-)
答案 0 :(得分:3)
这里是一个提示:
def f(x):
print(x)
print(type(x))
return 1
df.astype(str).groupby(d,axis=1).agg(f)
输出:
Wash_Month Wash_Day
0 3 2
1 4 3
<class 'pandas.core.frame.DataFrame'>
请注意输出是一个数据框。
相对于:
def f(x):
print(x)
print(type(x))
return 1
df.T.astype(str).groupby(d).agg(f)
输出:
Wash_Month 3
Wash_Day 2
Name: 0, dtype: object
<class 'pandas.core.series.Series'>
Wash_Month 4
Wash_Day 3
Name: 1, dtype: object
<class 'pandas.core.series.Series'>
每个系列都调用f,因此“ join”将列标题串联起来。
我无法通过挖掘源代码来解释它,但是看来groupby和astype(str)导致agg在每种情况下的动作都不同。