【问题标题】:Dataframe to lists in alphabetical order - Python数据框按字母顺序列出 - Python
【发布时间】:2021-10-10 17:13:08
【问题描述】:

我需要从数据框创建列表。 例如:我有一个数据框“df”,其中包含一个名为“names”的列,它有 30 个随机名称。

我想按字母顺序创建单独的列表,例如从 a 到 d 的名称将转到 list1,e 到 g 将转到 list2,依此类推。

感谢任何帮助。

【问题讨论】:

  • 您希望将名称分成多少个列表?
  • 我将为此使用 math.ceil(len(df)/4)
  • 我不明白你的公式和分隔列表之间的关系?如果您只有以 A 开头的名称,那么最后只有一个列表,对吧?
  • 如果假设我的数据框有 30 个随机名称,则要创建的列表数是 math.ceil(len(df)/4)=8 个列表。所以每个列表应该包含 4 个名字。 list1 将包含前 4 个 df 项,list2 将包含接下来的 4 个 df 项,依此类推,直到 list8

标签: python pandas list dataframe


【解决方案1】:

这个总共有 4 个列表

import pandas as pd
import math
df = pd.DataFrame({"names": ['Jon', 'Bill', 'Maria', 'Jenny', 'Jack', 'sam', 'john']})
t = df['names'].values.tolist()
t = sorted(t)
split = [[], [], [], []]
for i, name in enumerate(t):
    var = math.floor(i * 4 / len(t))
    split[var].append(name)
>>> print(split)
>>> [['Bill', 'Jack'], ['Jenny', 'Jon'], ['Maria', 'john'], ['sam']]

【讨论】:

  • 这会起作用,但我无法决定每次都是 4 个列表。所以我不能给 split=4 空列表。我想计算一下
  • 列表数量是如何决定的?
  • 我们可以使用 math.ceil(len(df)/4) 这意味着列表中有 4 个值
  • 知道了,赶紧修复
  • 抱歉没看懂
【解决方案2】:

每个列表有 4 个名字

import pandas as pd
df = pd.DataFrame({"names": ['Jon', 'Bill', 'Maria', 'Jenny', 'Jack', 'sam', 'john']})
t = sorted(df['names'].values.tolist())
split = []
for i in range(0, int(len(t) // 4) + 1):
    split.append([])
for i in range(0, len(t)):
    print(i // 4)
    split[int(i // 4)].append(t[i])
>>> print(split)
[['Bill', 'Jack', 'Jenny', 'Jon'], ['Maria', 'john', 'sam']]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-11
    • 2021-12-07
    • 2013-02-03
    • 2019-02-05
    • 1970-01-01
    • 1970-01-01
    • 2012-02-17
    • 1970-01-01
    相关资源
    最近更新 更多