我在pandas df中有一个包含多索引列的数据集,我希望按特定列中的值进行排序.我尝试过使用sortindex和sortlevel但是无法得到我想要的结果.我的数据集看起来像:
Group1 Group2
A B C A B C
1 1 0 3 2 5 7
2 5 6 9 1 0 0
3 7 0 2 0 3 5
Run Code Online (Sandbox Code Playgroud)
我想按照降序排列组1中C列的所有数据和索引,所以我的结果如下:
Group1 Group2
A B C A B C
2 5 6 9 1 0 0
1 1 0 3 2 5 7
3 7 0 2 0 3 5
Run Code Online (Sandbox Code Playgroud)
是否可以使用我的数据所在的结构进行此类排序,还是应该将Group1交换到索引端?
使用.loc对索引/切片的赋值进行一般性提问.
假设下面的DataFrame,df:
df:
A B C
0 a b
1 a b
2 b a
3 c c
4 c a
Run Code Online (Sandbox Code Playgroud)
代码重现:
df = pd.DataFrame({'A':list('aabcc'), 'B':list('bbaca'), 'C':5*[None]})
Run Code Online (Sandbox Code Playgroud)
我使用以下方法创建df1:
df1=df.loc[df.A=='c']
df1:
A B C
3 c c
4 c a
Run Code Online (Sandbox Code Playgroud)
然后我根据B中的值为C赋值:
df1.loc[df1.B=='a','C']='d'
Run Code Online (Sandbox Code Playgroud)
赋值有效,但我收到了SettingWithCopy警告.我做错了什么或这是预期的功能?我认为使用.loc会避免链接赋值.有什么东西我错过了吗?我正在使用熊猫14.1
我有一个pandas pivot_table,可以在两行中聚合2个数据集.我想添加另一列,即两行现有列中的聚合值之间的差异.有没有办法直接在pivot_table()调用中实现它?我知道返回的数据帧是一个数据帧,所以我可以通过其他方式计算它,但只是好奇是否有更有效的方法.
我的数据的简单示例:
Set Type Val
S1 A 1
S1 B 2
S1 B 3
S2 A 4
S2 B 5
S2 C 6
Run Code Online (Sandbox Code Playgroud)
使用以下代码,其中数据是我的df
piv=pivot_table(data,'Val',rows='Type',cols='Set',aggfunc=sum,fill_value=0.0)
Run Code Online (Sandbox Code Playgroud)
我得到以下内容
S1 S2
A 1 4
B 5 5
C 0 6
Run Code Online (Sandbox Code Playgroud)
我希望输出
S1 S2 Diff
A 1 4 3
B 5 5 0
C 0 6 6
Run Code Online (Sandbox Code Playgroud)
要不就
Diff
A 3
B 0
C 6
Run Code Online (Sandbox Code Playgroud)