【问题标题】:How to split text file into proper number of columns in python?如何在python中将文本文件拆分为适当数量的列?
【发布时间】:2020-03-25 08:17:15
【问题描述】:

我想将一个文本文件拆分成一定数量的列。我的文本文件已经在列中,但不是正确的数量。

YES    I       40     3
NO     IN      40C    4
YES    INF     39,13  C     4
NO     I       39     3 C   3

我希望它变成

YES    I       40      3
NO     IN      40C     4
YES    INF     39,13C  4
NO     I       39.3 C  3

我不知道如何减少列数。它们看起来非常相似,但 C 附加到上一列。任何帮助都会很棒。

【问题讨论】:

  • 即使在您提供的示例输出中,第 3 行和第 4 行的格式也不相同。在第 3 行中,C 直接移动到前面的 39,13 旁边,而在第 4 行中,39.3C 之间留有空格。另外,在第 4 行,39.3 中的. 是从哪里来的?这是因为393 之间的空格而假设的吗?
  • 所有我没有答案的非常好的问题。我会试着找出答案。

标签: python python-3.x file text multiple-columns


【解决方案1】:

这就是我要解决的方法,假设空格是 np.nan 并且列名是在示例中设置的:

import pandas as pd
import numpy as np
data = {'col1':['H3Z','H1M2B5','H3Z3L2','H3X1R7'],'col2':['I','INF','INFECTEE','MORTE'],'col3':['40','40C','39,13','39'],'col4':['3','4','C','3 C'],'col5':[np.nan,np.nan,'4','3']}
df = pd.DataFrame(data)
df['col3'] = np.where(df['col5'].isna(),df['col3'],df['col3'].astype(str)+df['col4'].astype(str))
df['col4'] = np.where(df['col5'].isna(),df['col4'],df['col5'])
df = df.drop(['col5'],axis=1)
print(df)

输出:

     col1      col2    col3 col4
0     H3Z         I      40    3
1  H1M2B5       INF     40C    4
2  H3Z3L2  INFECTEE  39,13C    4
3  H3X1R7     MORTE   393 C    3

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-26
    • 1970-01-01
    • 1970-01-01
    • 2018-08-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多