我知道pandas旨在加载完全填充DataFrame但我需要创建一个空的DataFrame,然后逐个添加行.做这个的最好方式是什么 ?
我成功创建了一个空的DataFrame:
res = DataFrame(columns=('lib', 'qty1', 'qty2'))
Run Code Online (Sandbox Code Playgroud)
然后我可以添加一个新行并填充一个字段:
res = res.set_value(len(res), 'qty1', 10.0)
Run Code Online (Sandbox Code Playgroud)
它工作但似乎很奇怪: - /(它添加字符串值失败)
如何向我的DataFrame添加新行(具有不同的列类型)?
我得到一个奇怪的 graphviz 布局,边缘重叠。
节点“5”似乎放置在错误的位置:

如果我在节点“5”和节点“h”之间强制使用边缘的正确位置,则一切都放置得很好:

为什么默认布局这么乱?
这是我的点源(只需取消注释该行即可获取固定版本):
digraph dummy {
subgraph line1 { rank = same
"1", "a", "b", "c", "d", "e", "f", "17"
}
subgraph line2 { rank = same
"9", "g", "11"
}
subgraph line3 { rank = same
"3", "h", "i", "14"
}
"c" -> "d"
"a" -> "b"
"b" -> "c"
"e" -> "f"
"i" -> "14"
"14" -> "f"
"a" -> "3"
"3" -> "h"
"d" -> "9"
"9" -> "g"
"h" -> "i"
"g" …Run Code Online (Sandbox Code Playgroud) 我不明白如何functools.lru_cache处理对象实例。我假设该类必须提供一种__hash__方法。因此任何具有相同哈希值的实例都应该hit缓存。
这是我的测试:
from functools import lru_cache
class Query:
def __init__(self, id: str):
self.id = id
def __hash__(self):
return hash(self.id)
@lru_cache()
def fetch_item(item):
return 'data'
o1 = Query(33)
o2 = Query(33)
o3 = 33
assert hash(o1) == hash(o2) == hash(o3)
fetch_item(o1) # <-- expecting miss
fetch_item(o1) # <-- expecting hit
fetch_item(o2) # <-- expecting hit BUT get a miss !
fetch_item(o3) # <-- expecting hit BUT get a miss !
fetch_item(o3) # <-- expecting hit …Run Code Online (Sandbox Code Playgroud)