我有一个包含以下列的数据框。
AA BB CC DD EE FF HH
我需要选择列"CT"
中BB
的所有行,然后按列FF
排序。
对于我的生活,我无法弄清楚如何做到这一点。 看起来很简单,但我错过了一些东西。
非常感谢任何帮助。
答案 0 :(得分:2)
要选择CT
行,您可以使用
df[ df['BB'] == 'CT' ]
或者如果它可以是CT
更长的字符串,即。 CTX
df[ df['BB'].str.contains('CT') ]
然后您可以使用sort_values()
对其进行排序.sort_values('FF')
完整示例
import pandas as pd
data = {
'AA': [1, 2, 3, 4, 5, 6, 7, 8],
'BB': ["", "CT", "", "CT", "CT", "", "", "CT"],
'CC': [1, 2, 3, 4, 5, 6, 7, 8],
'DD': [1, 2, 3, 4, 5, 6, 7, 8],
'EE': [1, 2, 3, 4, 5, 6, 7, 8],
'FF': [0, 1, 0, 5, 2, 0, 0, 7],
'HH': [1, 2, 3, 4, 5, 6, 7, 8],
}
df = pd.DataFrame(data)
print(df)
print(df[ df['BB'] == 'CT' ])
print(df[ df['BB'] == 'CT' ].sort_values('FF'))
开始时的数据
AA BB CC DD EE FF HH
0 1 1 1 1 0 1
1 2 CT 2 2 2 1 2
2 3 3 3 3 0 3
3 4 CT 4 4 4 5 4
4 5 CT 5 5 5 2 5
5 6 6 6 6 0 6
6 7 7 7 7 0 7
7 8 CT 8 8 8 7 8
df[ df['BB'] == 'CT' ]
之后
AA BB CC DD EE FF HH
1 2 CT 2 2 2 1 2
3 4 CT 4 4 4 5 4
4 5 CT 5 5 5 2 5
7 8 CT 8 8 8 7 8
排序后
AA BB CC DD EE FF HH
1 2 CT 2 2 2 1 2
4 5 CT 5 5 5 2 5
3 4 CT 4 4 4 5 4
7 8 CT 8 8 8 7 8
答案 1 :(得分:1)
这应该有效:
@Override
public void channelRead(final ChannelHandlerContext ctx, Object msg) {
ByteBuf m = (ByteBuf) msg;
m = safeBuffer(m, ctx.alloc());
String str = m.toString(Charset.forName("UTF-8"));
backendThreadPool.execute(new Runnable() {
@Override
public void run() {
//System.out.println("Starting business logic operation at back_end.");
synchronized(response) {
int randomNum = ThreadLocalRandom.current().nextInt(1000, 2001);
try {
Thread.currentThread().sleep(randomNum);
} catch (InterruptedException e1) {
e1.printStackTrace();
}
response.setResponse(str);
System.out.println("Finished at back_end.");
response.notify();
Thread.currentThread().interrupt();
}
}
});
String s = "Message returned from remote server through proxy : " + str;
byte[] b = s.getBytes(Charset.forName("UTF-8"));
defaultResponse.writeBytes(b);
inboundChannel.writeAndFlush(defaultResponse).addListener(new ChannelFutureListener() {
public void operationComplete(ChannelFuture future) throws Exception {
if (future.isSuccess()) {
ctx.channel().read();
} else {
future.channel().close();
}
}
});
}