【问题标题】:formatting a .txt file in pandas [duplicate]在熊猫中格式化.txt文件[重复]
【发布时间】:2017-04-10 08:54:06
【问题描述】:

我想要一个格式如下的 .txt 文件:

StateOne[edit]

RegionOne (UniversityOne)[1]

RegionTwo (UniversityTwo)

RegionThree (UniversityThree)[2]

并清理这些数据并以这种格式的DataFrame返回:

State   RegionName
0   StateOne    RegionOne
1   StateOne    RegionTwo
2   StateOne    RegionThree

所以例如我有:

Alabama[edit]

Auburn (Auburn University)[1]

Florence (University of North Alabama)

Jacksonville (Jacksonville State University)[2]

我需要把它转换成数据框:

    State   RegionName
0   Alabama Auburn
1   Alabama Florence
2   Alabama Jacksonville

我有点困惑如何将"[" 等字符删除到末尾并将它们命名为"State"。对于"RegionName",从"(" 中删除每个字符以在需要时结束时。 pandas 的新手,对快速简便的方法感到困惑。

【问题讨论】:

  • 一般来说,如果您至少尝试过并证明这一点,它会有助于获得答案
  • 感谢您的建议。我是堆栈溢出的新手,所以我在这里学习规则。我尝试了str.split() 方法,但似乎没有得到我想要的结果。

标签: python csv pandas file-io data-science


【解决方案1】:

这是假设状态始终具有[] 和区域() 的“编辑”。

诀窍是在“[”和“(”(视情况而定)中执行split 并保留字符串的第一部分。

string = '''Alabama[edit]

Auburn (Auburn University)[1]

Florence (University of North Alabama)

Jacksonville (Jacksonville State University)[2]'''

i = 0
print(' \t' + 'State' + '\t' + 'RegionName')

for line in string.split('\n'):       # Split by the line breaks
    if line == '':                    # We skip the line if it is empty
        continue
    if 'edit' in line:                # We look for some "edit" and 
        state, spam = line.split('[') # store it in a variable
        continue                      # When we find other
                                      # it will replace
    region_name, spam = line.split(' (')
    i += 1                            # The same but with '('
    print(str(i) + '\t' + state + '\t' + region_name)

希望对你有帮助!

【讨论】:

  • 非常感谢您的帮助,我非常感谢。
猜你喜欢
  • 1970-01-01
  • 2021-11-12
  • 1970-01-01
  • 2021-12-19
  • 2020-10-20
  • 2018-03-28
  • 2018-10-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多