小编Hot*_*one的帖子

具有可展开/可折叠行的 Dash 数据表

与 qtTree 类似,我想深入了解数据表的列。我想用一个例子可以更好地说明这一点。假设我们有一个包含三列的数据框:国家/地区、城市、人口,例如:

Country    City        Population
USA        New-York    19MM
China      Shanghai    26MM
China      Beijing     20MM
USA        Los Angeles 12MM
France     Paris       11MM
Run Code Online (Sandbox Code Playgroud)

有没有一种方法可以在虚线图数据表中理想地呈现这些数据,如下所示:

Country    City        Population
+USA                   31MM
 /---->    New-York    19MM
 /---->    Los Angeles 12MM
+China                 46MM
 /---->    Shanghai    26MM
 /---->    Beijing     20MM
+France                11MM
 /---->    Paris       11MM
Run Code Online (Sandbox Code Playgroud)

分组国家/城市将展开(或者可能在单击行 -?- 时隐藏/显示)。在国家一级,人口将是其选民的总和,在城市一级,人口将是来自该城市的人口。

库 dash_treeview_antd 允许树视图表示,但我不知道如何包含人口列。也许有一种更简单的方法,首先在 pandas 中进行 groupby,然后进行回调来隐藏/显示当前行选择/单击?

编辑:

我一直在玩弄.groupbypandas 和回调中的' active_cell' Dash DataTable 属性。

def defineDF():
    df = pd.DataFrame({'Country': ['USA', 'China', 'China', 'USA', 'France'],
                   'City': ['New-York', …
Run Code Online (Sandbox Code Playgroud)

python python-3.x pandas plotly-dash plotly-dash-datatable

6
推荐指数
1
解决办法
2673
查看次数

将 $1B 转换为数字

我从 nasdaq 网站检索了一个包含几列(Ticker、MarketCap...)的 csv 文件。我使用熊猫的 read_csv 来获取数据框。我的问题是我无法将 MarketCap 列的格式转换为数字。这是 MarketCap 列的样子:

MarketCap
$5.54B
$526.85M
$28.41M
nan
nan
Run Code Online (Sandbox Code Playgroud)

理想情况下,我想删除 $ 符号并将 B 转换为 1'000'000'000 并将 M 转换为 1'000'000 pandas 中的 replace/to_replace 函数在这里似乎不起作用。我想更新我的数据框如下:

MarketCap
5'540'000'000'000
526'850'000'000
28'410'000'000
nan
nan
Run Code Online (Sandbox Code Playgroud)

(为了清楚起见,我使用 ' 作为千位分隔符)。我不关心 nan 值,所以现在不能删除/忽略它。

我尝试使用熊猫的替换方法如下:

df['MarketCap].replace(to_replace= ['B', 'M'], values= ['*1000000000', '*1000000'], inplace=True)
Run Code Online (Sandbox Code Playgroud)

不幸的是,由于该列是字符串格式,因此上述不适用乘法。

python pandas

4
推荐指数
1
解决办法
92
查看次数