【问题标题】:How to separate ID number from Row A to Row B?如何将 ID 号从 A 行分隔到 B 行?
【发布时间】:2021-12-05 17:54:12
【问题描述】:

所以基本上我在尝试这段代码时卡住了,但它并没有拆分名称和数字。 PL 参考示例图像以了解所需的结果。

我尝试过的代码

【问题讨论】:

标签: atom-editor


【解决方案1】:

引用和分隔符有问题。要清理您的数据框,请使用以下代码:

pd.read_csv('names_tab2.csv', quoting=1, header=None)[0] \
  .str.split('\t', expand=True) \
  .to_csv('clean_names.csv', index=False, header=False)

旧答案 使用str.extract

假设这个数据框:

df = pd.DataFrame({'ColA': ['CAIN TAN86092142', 'YEO KIAT JUN81901613']})
print(df)

# Output:
                   ColA
0      CAIN TAN86092142
1  YEO KIAT JUN81901613

在遇到的第一个数字上拆分:

out = df['ColA'].str.extract(r'([^\d]*)(\d+)') \
                .rename(columns={0: 'Name', 1: 'Number'})
print(out)

# Output:
           Name    Number
0      CAIN TAN  86092142
1  YEO KIAT JUN  81901613

更新

有没有办法在输出到 csv 时删除名称和编号?

out.to_csv('data.csv', index=False, header=None)

# content of data.csv:
CAIN TAN,86092142
YEO KIAT JUN,81901613

【讨论】:

  • @codingn00b。它解决了你的问题吗?
  • 是的,但是有没有办法在输出到 csv 时删除名称和编号?
  • 你好,对不起,你如何使用 %cat 功能
  • 这不是 Python 命令。抱歉,我删除了它。
  • 哦,我明白了 np :D 。还有1个问题。有没有办法直接从文件中读取而不是手​​动输入数据框。或者我是否必须从记事本复制并粘贴数据并将其设置为数据框。谢谢
【解决方案2】:

当打开纯文本文件(或在本例中为纯文本 csv 文件)时,您可以使用 for 循环逐行遍历文件,如下所示(当前为 Python 3):

name = []
id_num = []

file = open('file.csv', 'r')

for f in file:
    f = f.split(',')               # split the data
    name.append(str(f[0]))     # append name to list
    id_num.append(str(f[1]))   # append ID to list
    

现在您已经拥有列表中的数据,您可以按照自己的意愿打印/存储它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-03
    • 2012-06-17
    • 1970-01-01
    • 2022-06-14
    • 1970-01-01
    • 1970-01-01
    • 2018-03-13
    相关资源
    最近更新 更多