gpt4 book ai didi

python - 从一组具有混合数字类型的范围创建 DataFrame

转载 作者:行者123 更新时间:2023-12-01 00:17:22 24 4
gpt4 key购买 nike

我有一个包含 5 个范围的列表,我想从中创建一个 DataFrame。生成的 DataFrame 应有 10 行和 5 列。列的值将是给定范围内的随机数。

给定的范围是整数和 float 的混合,即 [1,31] 表示整数范围,[4, 172.583333] 表示 float 范围.

下面的代码仅适用于整数或 float 的输出。

如何获得整数和 float 的混合输出? IE。 A 列保存整数,B 列保存 float ,C 列也保存 float ,D 和 E 保存整数。

谢谢。

import numpy as np
import pandas as pd

min_max = [
[1, 31],
[4, 172.583333],
[0, 88.50561],
[4, 297],
[3, 37]]

for a, b in min_max:
df = pd.DataFrame(np.random.randint(a,b,size=(10, 5)), columns=list('ABCDE')) # to generate intergers only
df = pd.DataFrame(np.random.uniform(a,b,size=(10, 5)), columns=list('ABCDE')) # to generate floats only

最佳答案

根据您想要的数据类型创建一个单独的pd.Series。在下面的示例中,这是通过检查最小值或最大值是否为浮点类型来推断的。还有其他方法可以做到这一点,例如显式添加所需的数据类型。

然后,使用系列列表创建一个 DataFrame。

import numpy as np
import pandas as pd

min_max = ([1, 31], [4, 172.583333], [0, 88.50561], [4, 297], [3, 37])


def make_series(low, high, name):
if any(isinstance(_, float) for _ in (low, high)):
func = np.random.uniform
else:
func = np.random.randint
return pd.Series(func(low, high, size=(10,)), name=name)


pd.concat([make_series(lo, hi, name) for (lo, hi), name in zip(min_max, "ABCDE")],
axis=1)

关于python - 从一组具有混合数字类型的范围创建 DataFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59231193/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com