逐行读取数据
for line in sys.stdin:
print(line)
每行输入如下:
纽约100
奥兰多200
LA 300
D.C. 400
我想要的输出是一个数据帧:
city value
0 New York 100
1 Orlando 200
2 LA 300
3 D.C. 400
我正在做的方式是读取该行并将所有行保存为列表列表,其中每行内容都是一个列表
list_of_lists = []
for line in sys.stdin:
new_list = [elem for elem in line.split()]
list_of_lists.append(new_list)
然后将此list_of_lists转换为DataFrame。
我觉得这种方式非常愚蠢,所以我想知道是否还有其他办法。 谢谢。
答案 0 :(得分:2)
import sys, re, pandas as pd
data = sys.stdin.read().splitlines() # obtaining the list of lines from stdin
data = [re.split(r'\s+(?=\d+$)', l) for l in data] # split each line into 2 items: `city` and `value`
df = pd.DataFrame(data, columns=['city','value']) # constructing dataframe
print(df)
输出:
city value
0 New York 100
1 Orlando 200
2 LA 300
3 D.C. 400
答案 1 :(得分:0)
使用str.rsplit
从右侧分割,只有一次
list_of_lists = []
for line in sys.stdin:
new_list = line.rsplit(1)
list_of_lists.append(new_list)
或者,先放入熊猫系列
import sys, re, pandas as pd
data = sys.stdin.read().splitlines()
pd.Series(data, name='A').str.rsplit(n=1, expand=True)