如何识别 DataFrame 中的哪些列包含特定字符串'foo'?
>>> import pandas as pd
>>> df = pd.DataFrame({'A':[10,20,42], 'B':['foo','bar','blah'],'C':[3,4,5], 'D':['some','foo','thing']})
Run Code Online (Sandbox Code Playgroud)
我想找到B和D这里。
如果我正在寻找一个数字(例如 42)而不是一个字符串,我可以生成一个布尔掩码,如下所示:
>>> ~(df.where(df==42)).isnull().all()
A True
B False
C False
D False
dtype: bool
Run Code Online (Sandbox Code Playgroud)
>>> ~(df.where(df=='foo')).isnull().all()
TypeError: Could not compare ['foo'] with block values
Run Code Online (Sandbox Code Playgroud)
如果可能,我不想遍历每一列和每一行(我的实际数据比这个例子大得多)。感觉应该有一个简单有效的方法。
我怎样才能做到这一点?
在 aMap<K,V>我想知道有多少唯一值V。有没有类似的东西getValueSet()可以让我得到这个集合的大小?在伪代码中:
Map<K,V> myMap = ...//initiate Map;
Set<V> valueSet = myMap.getValueSet()
int numberUniqueB = valueSet.size();
Run Code Online (Sandbox Code Playgroud)
不幸的是没有getValueSet方法。或者,我可以像这样自己遍历列表:
Set<V> mySet = new HashSet<V>();
for(Map.Entry<K,V> entry : myMap.entrySet()){
V value = entry.getValue();
mySet.add(value);
}
int countUniqueB = mySet.size();
Run Code Online (Sandbox Code Playgroud)
但这似乎是我在重新发明轮子。是否有什么Collections地方或其他地方已经做了我正在寻找的东西?如果没有,是否有比我上面的方法更有效的方法来获得结果?
我正在编写一个带有字节体的 python post 请求:
with open('srt_file.srt', 'rb') as f:
data = f.read()
res = requests.post(url='http://localhost:8000/api/parse/srt',
data=data,
headers={'Content-Type': 'application/octet-stream'})
Run Code Online (Sandbox Code Playgroud)
在服务器部分,我尝试解析正文:
app = FastAPI()
BaseConfig.arbitrary_types_allowed = True
class Data(BaseModel):
data: bytes
@app.post("/api/parse/{format}", response_model=CaptionJson)
async def parse_input(format: str, data: Data) -> CaptionJson:
...
Run Code Online (Sandbox Code Playgroud)
但是,我收到了 422 错误:
{"detail":[{"loc":["body"],"msg":"value is not a valid dict","type":"type_error.dict"}]}
那么我的代码哪里出了问题,我应该如何修复它?预先感谢大家的帮助!