【问题标题】:Converting standard input to dataframe将标准输入转换为数据框
【发布时间】:2021-07-31 14:07:22
【问题描述】:

我有标准输入:

'Town3, NYC, Town1, Town4, Town5, Town6, Town2
 67, 69, 60, 63, 65, 69, 95'

我想知道如何将其转换为 pandas 数据框,以便获得:

   Town3  NYC  Town1  Town4  Town5  Town6  Town2
0     67   69     60     63     65     69     95

【问题讨论】:

  • 您的标准输入不是 Python 中的有效字符串。如果这是一个多行字符串,则需要用三引号括起来。 s = '''...''' 而@AndrejKesely 的答案是正确的。

标签: python pandas stdin


【解决方案1】:

你可以使用io.StringIO + pd.read_csv:

import pandas as pd
from io import StringIO

s = """Town3, NYC, Town1, Town4, Town5, Town6, Town2
 67, 69, 60, 63, 65, 69, 95"""

df = pd.read_csv(
    StringIO(s),
    sep=r",\s*",
    engine="python",
)

print(df)

打印:

   Town3  NYC  Town1  Town4  Town5  Town6  Town2
0     67   69     60     63     65     69     95

【讨论】:

    【解决方案2】:

    将您的字符串拆分为列表。把它切成两等份。第一部分是列,第二部分是值:

    s = 'Town3, NYC, Town1, Town4, Town5, Town6, Town2, 67, 69, 60, 63, 65, 69, 95'
    l = s.split(', ')
    
    df = pd.DataFrame([l[len(l)//2:]], columns=l[:len(l)//2])
    
    >>> df
    
      Town3 NYC Town1 Town4 Town5 Town6 Town2
    0    67  69    60    63    65    69    95
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-10-12
      • 2018-03-14
      • 2018-07-05
      • 1970-01-01
      • 1970-01-01
      • 2019-01-31
      • 1970-01-01
      • 2020-05-28
      相关资源
      最近更新 更多