RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / user-193923

polsok's questions

Martin Hope
polsok
Asked: 2024-08-28 14:57:49 +0000 UTC

表解析(一般数据、不同数据和空数据)

  • 5

假设 .csv 文件中有一个表

(为了方便和人类可读性,我采用了测试数据)

ID 234522 524321 234956 234983 293853
姓 伊万诺夫 塔拉索娃 彼得罗夫 库兹涅佐娃 普希金
地面 男性 女性 男性 女性 男性
出生年份 1965年 1999年 1984年 1979年 2001年
职称 工程师 工程师 工程师 工程师 工程师
儿童数量 2 1 3
电话 7485 3310 6500
办公室 中央 中央 中央 中央 中央
邮件 [电子邮件受保护] [电子邮件受保护] [电子邮件受保护]

您需要处理这些数据:

1 分离可变和不可变数据:

不可变数据:

钥匙 意义
职称 工程师
办公室 中央

可变数据:

ID 234522 524321 234956 234983 293853
姓 伊万诺夫 塔拉索娃 彼得罗夫 库兹涅佐娃 普希金
地面 男性 女性 男性 女性 男性
出生年份 1965年 1999年 1984年 1979年 2001年
儿童数量 2 1 3
电话 7485 3310 6500
邮件 [电子邮件受保护] [电子邮件受保护] [电子邮件受保护]

2 分离空数据和非空数据:

空数据(有空数据的行,没有空数据的列除外)

ID 524321 234956 234983 293853
儿童数量 1 3
电话 3310 6500
邮件 [电子邮件受保护] [电子邮件受保护]

非空数据(仅限字符串):

ID 234522 524321 234956 234983 293853
姓 伊万诺夫 塔拉索娃 彼得罗夫 库兹涅佐娃 普希金
地面 男性 女性 男性 女性 男性
出生年份 1965年 1999年 1984年 1979年 2001年
职称 工程师 工程师 工程师 工程师 工程师
办公室 中央 中央 中央 中央 中央

我想用 pandas 将它们分开,请帮我解决问题

python
  • 1 个回答
  • 44 Views
Martin Hope
polsok
Asked: 2024-08-24 03:30:16 +0000 UTC

将各种yaml文件解析到一张表中

  • 5

有几个yaml文件:

文件1

name: phone1
spec:
  type1:
    - name: cpu
      value: 8 core
    - name: RAM
      value: 8Gb
      type:
        - name: ttt1
        - name: ttt2
  color: gold

文件2

name: phone2
spec:
  type1:
    - name: cpu
      value: 4 core
    - name: RAM
      value: 4Gb
      type:
        - name: ttt3
        - name: ttt4
  size:
    length: 80
    height: 10
    weight: 40

文件3

name: phone3
spec:
  type1:
    - name: cpu
      value: 2 core
    - name: RAM
      value: 2Gb
      type:
        - name: ttt5
        - name: ttt6

它们需要以表格形式呈现,其中第一列是键,其余是值。如果密钥不在文件中,则单元格保持为空

该表将如下所示:

电话 文件1 文件2 文件3
姓名 电话1 电话2 电话3
规格.type1.0.名称 中央处理器 中央处理器 中央处理器
规格.type1.0.值 8核 4核 2核
规格.类型1.1.名称 内存 内存 内存
规格.类型1.1.值 8Gb 4GB 2GB
规格.type1.1.type.0.名称 TT1 ttt3 ttt5
规格.type1.1.type.1.名称 TT2 TT4 TT6
规格尺寸长度 80
规格尺寸高度 10
规格尺寸重量 40
规格颜色 金子

其实这样的文件还有很多,我只是举了一些例子

我正在尝试解析所有这些:这是一个文件的示例:

import yaml
import pandas as pd

# Загрузка YAML-файла в словарь
def GetData(data, prefix):
    if isinstance(data, dict):
        for k, v in data.items():
            yield from GetData(v, f'{prefix}/{k}')
    elif isinstance(data, list):
        for i, v in enumerate(data):
            yield from GetData(v, f'{prefix}/{i}')
    else:
        yield (prefix, data)

# Путь к YAML-файлу
def var1(filename: str):
    with open(filename, "r") as f:
        yaml_data = yaml.safe_load(f)
        retval = pd.DataFrame(GetData(yaml_data, ''), columns=['0', filename])
    return retval

var1('file1.yaml').to_csv('data.csv', index=False)

结果:

电话 文件1
姓名 电话1
规格.type1.0.名称 中央处理器
规格.type1.0.值 8核
规格.类型1.1.名称 内存
规格.类型1.1.值 8Gb
规格.type1.1.type.0.名称 TT1
规格.type1.1.type.1.名称 TT2
规格颜色 金子

所有内容都适用于一个文件,但不可能合并多个文件中的数据。

这是多个文件的选项:

import yaml
import pandas as pd
files = ["file1.yaml", "file2.yaml", "file3.yaml"]

def var2(filename: str):
    with open(filename, "r") as f:
        retval = pd.DataFrame(pd.json_normalize(yaml.safe_load(f))).T
        retval = retval.rename(columns={0:filename})
    return retval
pd.concat([var2(file) for file in files], axis=1).to_csv('results/data2.csv', index=True)

结果:

电话 文件1 文件2 文件3
姓名 电话1 电话2 电话3
规格类型1 "[{'name': 'cpu', 'value': '8 核'}, {'name': 'RAM', 'value': '8Gb', 'type': [{'name': 'ttt1 '}, {'name': 'ttt2'}]}]" "[{'name': 'cpu', 'value': '4 核'}, {'name': 'RAM', 'value': '4Gb', 'type': [{'name': 'ttt3 '}, {'name': 'ttt4'}]}]" "[{'name': 'cpu', 'value': '2 核'}, {'name': 'RAM', 'value': '2Gb', 'type': [{'name': 'ttt5 '}, {'name': 'ttt6'}]}]"
规格颜色 金子
规格尺寸长度 80
规格尺寸高度 10
规格尺寸重量 40

这里还有另一个问题:嵌套键未被解析。

帮助解决:为了解析所有文件,每个嵌套键都输入到单独的行中,并且空键也显示在表中

python
  • 1 个回答
  • 18 Views
Martin Hope
polsok
Asked: 2024-08-21 00:41:53 +0000 UTC

将yaml文件解析成表

  • 7

有几个yaml文件:

文件1

 phone:
   os: android
   size:
     length: 80
     height: 10
     weight: 40
   model: SE-35
   price: 20000

文件2

 phone:
   os: apple
   model: Iphone 15
   price: 150000
   color: gold

文件3

 phone:
   os: apple
   model: Iphone 15
   color: black
   exist: absent

文件4

 phone:
   os: android
   size:
     length: 75
     height: 8
     weight: 36
   camera:
     front: 4 mp
     back: 64 mp
       zoom: 3
   model: SE-35
   price: 20000

它们需要以表格形式呈现,其中第一列是键,其余是值。

该表将如下所示:

电话 文件1 文件2 文件3 文件4
电话操作系统 安卓 苹果 苹果 安卓
手机.尺寸.长度 80 75
手机.尺寸.高度 10 8
手机.尺寸.重量 40 35
手机型号 SE-35 iPhone 15 iPhone 15
电话.价格 20000 150000 20000
电话颜色 金子 黑色的
电话.存在 缺席的
手机.相机.前置 4 议员
电话.相机.返回 64 点
手机.相机.后退.缩放 3

其实这样的文件还有很多,我只是举了一些例子

我试图解析它们:这是代码:

import os
import yaml
import pandas as pd

# получаем данные из файла
def GetData(data, prefix):
  if isinstance(data, dict):
    for k, v in data.items():
        yield from GetData(v, f'{prefix}/{k}')
  else:
    yield (prefix, data)

# находим все файлы в директории
def findYamlFiles(directory):
  for root, dirs, files in os.walk(directory):
    for file in files:
        if file.endswith('.yaml' or '.yml'):
            with open(os.path.join(root, file), 'r') as f:
              yaml_data = yaml.safe_load(f)
              df = pd.DataFrame(GetData(yaml_data, ''), columns=['phone', 'rezults'])

path = "~/phones"
findYamlFiles(path)

总的来说,在 df 中我得到了一个完全解析的 yaml 文件,由两列组成,但我无法将所有 df 收集到一张表中。

python
  • 3 个回答
  • 88 Views
Martin Hope
polsok
Asked: 2024-08-19 18:29:27 +0000 UTC

将字典解析成表

  • 7

例如,给定包含数据的字典:

pers1 = {"Surname": "Ivanov", "Child": 3, "Age": "18"}

pers2 = dict([("Surname", "Petrov"), ("Name", "Ivan"), ("Age", "56")])

pers3 = dict([("Surname", "Sidorov"), ("Child", 1), ("Name", "Sergey")])

我怎样才能将这些数据传输到表中,使其看起来像这样:

一个 乙 C D
个人1 个人2 个人3
姓 伊万诺夫 彼得罗夫 西多罗夫
姓名 伊万 谢尔盖
年龄 18 56
孩子 1 3
python
  • 3 个回答
  • 74 Views
Martin Hope
polsok
Asked: 2022-05-17 20:05:00 +0000 UTC

文件路径中的空格

  • 0

有必要从列表中检查计算机上是否安装了某个版本的1C,问题是默认情况下它是沿着路径安装的:\\computername\c$\Program Files (x86)\1cv8\8.3.18.1208. 并且 c# 不接受路径中的空格。

试图将字符串括在引号中:

string path = "\"\\\\" + computer + "\\c$\\Program Files (x86)\\1cv8\\8.3.18.1208\"";
    if (Directory.Exists(path))
    {
    }

但他仍然拒绝接受。快速解决方案

c#
  • 1 个回答
  • 10 Views
Martin Hope
polsok
Asked: 2022-09-24 16:49:46 +0000 UTC

如何将文件的一部分传输到文件流?

  • 0

有一个文件可供读取,我将它添加到 FileStream 流中,如下所示:

 FileInfo fInfo = new FileInfo(path);
 FileStream fileStream = fInfo.OpenRead();

但是文件很大。如何仅将第 100 万字节到第 2 百万字节的数据发送到流中。

c#
  • 1 个回答
  • 10 Views
Martin Hope
polsok
Asked: 2022-05-21 16:21:59 +0000 UTC

从字符串中获取字节数组作为十六进制数

  • 1

例如,我有这样的一行"A329DF34"。如何把它变成一个4字节的数组?

当然,你也可以把它分成2的部分,然后把每一部分变成一个数字 from 0to 255,然后将结果保存为一个字节数组。但也许有一个标准的解决方案?

c#
  • 1 个回答
  • 10 Views
Martin Hope
polsok
Asked: 2022-03-07 23:15:17 +0000 UTC

字典中的一个键获取多个值

  • 0

有一本字典:

Dictionary<string, string> AuthorList = new Dictionary<string, string>();
AuthorList.Add("aaa", "гистидин");
AuthorList.Add("bbb", "фенилаланин");
AuthorList.Add("aaa", "кокаин");
AuthorList.Add("ccc", "глицин");
AuthorList.Add("ddd", "глицин");
AuthorList.Add("aaa", "атропин");

如何通过键aaa获取所有的值(以列表或数组的形式)?

c#
  • 3 个回答
  • 10 Views
Martin Hope
polsok
Asked: 2022-02-26 21:35:45 +0000 UTC

指定密码复杂性

  • 5

如何要求所有用户使用复杂的登录密码(字母、数字和符号)。

linux
  • 1 个回答
  • 10 Views
Martin Hope
polsok
Asked: 2022-02-19 19:47:06 +0000 UTC

如何在 Linux 中获取当前星期几?

  • 0

我找到了一个命令,它给出了特定日期的星期几date -d 1917-11-07 +%A,但是我怎样才能得到今天的星期几呢?

linux
  • 1 个回答
  • 10 Views
Martin Hope
polsok
Asked: 2022-02-13 11:46:06 +0000 UTC

向控制台输出信息

  • 1

如何将命令的结果打印ping ya.ru到控制台,只显示每行的最后五个字符?

linux
  • 2 个回答
  • 10 Views
Martin Hope
polsok
Asked: 2022-02-11 21:56:08 +0000 UTC

复制找到的文件列表

  • 0

在您的主文件夹中查找以字母“a”到“z”开头的所有文件,并将它们复制到主“目录”中的临时文件夹中。

如何找到很清楚:find -name "[a-z]*"但是选择的文件到底是如何复制到文件夹中的?

linux
  • 1 个回答
  • 10 Views
Martin Hope
polsok
Asked: 2022-02-10 17:33:47 +0000 UTC

使用 ls 命令保存对文件的响应

  • 0

将用户主文件夹的内容输出到当前文件夹中名为“list”的文件中。

linux
  • 2 个回答
  • 10 Views
Martin Hope
polsok
Asked: 2022-02-08 23:14:51 +0000 UTC

GRUB2 不接受设置

  • 1

Centos 8 已安装。
我编辑 grub2: 文件nano /etc/default/grub,安装:

GRUB_TIMEOUT=30
GRUB_HIDDEN_TIMEOUT_QUIET=false

我保存,检查:一切都保存了,我重新启动。

他就像5秒一样,就是这样。发射很安静,没有恶魔。
怎么修?

linux
  • 1 个回答
  • 10 Views
Martin Hope
polsok
Asked: 2022-01-19 20:48:51 +0000 UTC

选择哪个配置文件?

  • 1

通常对于我的应用程序,我需要使用一个文件来存储保存的数据来配置我的应用程序(换句话说,一个配置文件)。到目前为止,我还没有找到我理想的选择。该文件必须满足以下要求:

  1. 应用程序需要易于写入且易于阅读。
  2. 当文件被人打开时,即使文件很大,数据也必须易于阅读和理解。
  3. 无论在哪个平台上打开文件进行编辑,人们都应该有一种简单的方法来写入配置文件,并且引入错误的可能性最小。

例如,XML 不符合这些要求。它读起来很好,您可以在您的应用程序中记录。但是比如说,人已经不是很容易弄明白了,而是一般地编辑文件,要么在特殊的软件中,要么出错的概率很高。

我正在使用 CSV。也不理想,但至少它允许您以表格的形式查看配置,并且您可以在任何文本编辑器中对其进行编辑(虽然不是很容易)。

你用的是什么配置文件?

linux
  • 1 个回答
  • 10 Views
Martin Hope
polsok
Asked: 2020-08-05 22:46:12 +0000 UTC

为数组 2 分配数组 1 的值,但删除了第一个元素

  • 0

这是一个示例代码:

int[] a = {0, 1, 2, 3, 4};
int[] b = new int[a.Length-1];
for (int i = 0; i < a.Length; i++)
{
    b[i] = a[i + 1];
}

是否可以将其减少到一行?

c#
  • 1 个回答
  • 10 Views
Martin Hope
polsok
Asked: 2020-07-30 18:58:33 +0000 UTC

创建树

  • 1

输入是一个列表,例如:

List<string> path = new List<string>() { "первый", "второй"});

此列表的元素是嵌套节点。例如,在这种情况下,意味着需要在创建第二个节点的根节点中创建第一个节点。我写了代码,但是当使用递归方法每次在另一个节点中添加一个节点时,由于某种原因,主根节点没有变化。这是有这个问题的代码和一个例子。请告诉我如何解决它。

class Program
{
    private static Node rootNode;
    static void Main(string[] args)
    {
        rootNode = new Node("root");
        List<string> path;
        
        AddNode(rootNode, path = new List<string>() { "первый", "второй"});
        AddNode(rootNode, path = new List<string>() { "второй" });
        AddNode(rootNode, path = new List<string>() { "первый","1" });
        AddNode(rootNode, path = new List<string>() { "третий","1" });
        AddNode(rootNode, path = new List<string>() { "четвертый","1" });
        AddNode(rootNode, path = new List<string>() { "первый" });
        AddNode(rootNode, path = new List<string>() { "первый" });
    }

    static void AddNode(Node node, List<string> path)
    {
        Node childNode;

        if (node.ChildList.Count == 0)
        {
            node.ChildList.Add( new Node(path[0]));
            if (path.Count > 1)
            {
                List<string> path1 = path.GetRange(1, path.Count-1);
                AddNode(new Node(path[0]), path1);
            }
        }
        else
        {
            bool True = false;
            for (int i = 0; i < node.ChildList.Count; i++)
                if (node.ChildList[i].Name == path[0])
                {
                    True = true;
                    if (path.Count > 1)
                    {
                        List<string> path1 = path.GetRange(1, path.Count-1);
                        AddNode(new Node(path[0]), path1);
                    }
                }

            if (!True)
            {
                node.ChildList.Add(childNode = new Node(path[0]));
                if (path.Count > 1)
                {
                    List<string> path1 = path.GetRange(1, path.Count-1);
                    AddNode(new Node(path[0]), path1);
                }
            }
        }
    }

    static Node searchNode(int number)
    {
        return null;
    }
}

class Node
{
    private static int number = 0;
    public Node(string name)
    {
        Number = number;
        Name = name;
        ChildList = new List<Node>();
        number++;
    }
    public int Number { get; set; }
    public string Name { get; set; }
    public List<Node> ChildList { get; set; }
}
c#
  • 1 个回答
  • 10 Views
Martin Hope
polsok
Asked: 2020-07-30 18:17:03 +0000 UTC

将列表 1 的值分配给列表 2,但删除了第一个元素

  • 0
List<string> path = new List<string>() { "первый","второй" });
List<string> path1 = path.RemoveAt(0);

不幸的是,这不起作用。如何让它发挥作用?

c#
  • 1 个回答
  • 10 Views
Martin Hope
polsok
Asked: 2020-07-21 22:07:41 +0000 UTC

遍历一个列表以在另一个列表中创建一个对象

  • 0

这是代码:

class Node
{
    static List<string> list = new List<string>(){"первый","второй","третий","четвертый"};

    public string Name { get; set; }
    public Node Node { get; set; }

    static void Load()
    {
        foreach (var @var in list)
        {
            
        }
    }
}

应该在循环中放置什么,foreach以便在运行该方法时,Load将创建一个Node名为 first的类型的对象,其中将有一个Node名为 second 的类型的对象,其中将有一个名为 first 的对象名称为第三的类型Node,其内部会有一个Node名称为第四的类型的对象?

c#
  • 1 个回答
  • 10 Views
Martin Hope
polsok
Asked: 2020-04-27 15:18:10 +0000 UTC

将 CMD 和 Powershell 输出捕获到字符串变量中?

  • 1

如何将 CMD 和 Powershell 命令的结果不输出到控制台,也不输出到文本文件,而是立即输出到字符串变量?

c#
  • 1 个回答
  • 10 Views

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5