【问题标题】:Selecting data from multiple dataframe columns and compiling into one list从多个数据框列中选择数据并编译成一个列表
【发布时间】:2021-04-22 16:15:29
【问题描述】:

我是 python 和相关库的新手,我自己在语法、数据类型等的森林中乱搞。我非常感谢关于以下问题的任何建议:我正在尝试从多个列中选择值(以下示例中的“数字”和“数字2”)基于一列(“字母”)中的值在数据框中,然后将不同列中的值组合到一个列表中,以便我可以对组合值进行统计分析.经过一定的反复试验,我得到了以下似乎可行的方法……但感觉有点笨拙。有没有更好的办法?!

非常感谢!

Letters = ["A","B", "C", "C", "D", "D", "D"]
Numbers =[1,1,1,2,1,2,3]
Numbers2 =[10,10,10,20,10,20,30]

test_dict={"Letter":Letters, "Number":Numbers, "Number2":Numbers2}
test=pd.DataFrame(test_dict)

numbers_by_letters =[]

for unique_letter in test["Letter"].unique(): 
    numbers_by_letter =[]
    for col in range (1, 3) :
        number_by_letter=test[test["Letter"] == unique_letter].iloc[:,col]
        numbers_by_letter.extend(number_by_letter)
    numbers_by_letters.append(numbers_by_letter) 

print (numbers_by_letters)

我得到的输出如下所示,是我想要的!

[[1, 10], [1, 10], [1, 2, 10, 20], [1, 2, 3, 10, 20, 30]]

【问题讨论】:

  • 您能描述一下您希望如何将输入转换为输出吗?从你的代码很难理解。
  • 不知道我知道如何回答这个问题!数据框中的输入值包含浮点值,底部显示的列表输出列表具有我需要的形式的输出。即,对于字母列中的每个唯一条目,我现在有一个简单的与该条目关联的值列表,该列表从不同的列编译而来。那是你需要的信息吗?如果不慢慢解释,我会尽力而为......谢谢!

标签: python list dataframe multiple-columns


【解决方案1】:
print(
    test.groupby("Letter")
    .apply(lambda x: sorted(x[["Number", "Number2"]].to_numpy().flatten()))
    .to_list()
)

打印:

[[1, 10], [1, 10], [1, 2, 10, 20], [1, 2, 3, 10, 20, 30]]

【讨论】:

  • 酷 - 谢谢!你把我带离了我的深度......在我的真实情况下,我从中采样的列数是代码前面定义的变量,这就是为什么我用“范围内的列”结构设置它的原因.您可以修改解决方案以使列数变化吗?
  • @MontagnaBlue 你可以.apply(lambda x: sorted(x.iloc[:, 0:2].to_numpy().flatten())) 注意.iloc[:, 0:2] 指定列的范围。
  • 谢谢 - 太好了!
猜你喜欢
  • 1970-01-01
  • 2020-07-04
  • 2021-12-30
  • 2016-04-28
  • 1970-01-01
  • 1970-01-01
  • 2019-12-19
  • 1970-01-01
  • 2011-09-12
相关资源
最近更新 更多