我正在运行将csv数据作为字符串的python程序,需要对其进行排序并将输出作为字符串返回
input="Bet,Charle,Daniell,Ada,Eri\n17945,10091,10088,3907,10132\n2,12,13,48,11"
所需输出 = "Ada,Bet,Charle,Daniell,Eri\n3907,17945,10091,10088,10132\n48,2,12,13,11"
import pandas as pd
from io import StringIO
def sort_csv(input):
str_data = StringIO(input)
output_df = pd.read_csv(str_data, sep=",")
output_df = output_df.sort_index(axis=1)
output_df.to_csv(path_or_buf='temp.csv', index=False)
data = open('temp.csv').read()
return data
我面临以下错误 类型错误:切片索引必须是整数或无或具有 index 方法
pandas 包已升级,使用 python 3.4。 有什么帮助吗?
答案 0 :(得分:1)
这是一个避免使用 pandas
的实现,并允许按不同的列进行排序。一旦您将输入字符串分解为列表列表,您指定的排序列(即您想用来从列表列表中排序的列表)将被排序,同时记录原始索引,然后将其作为排序键传递到其他列表。之后,您只需将字符串重新连接在一起:
x = "Bet,Charle,Daniell,Ada,Eri\n17945,10091,10088,3907,10132\n2,12,13,48,11"
col_to_sort = 0
sublists = [i.split(',') for i in x.split()]
sorted_list = [[l[i] for i in sorted(range(len(sublists[col_to_sort])), key=lambda k: sublists[col_to_sort][k])] for l in sublists]
print(repr('\n'.join(','.join(k) for k in sorted_list)))
产量:
'Ada,Bet,Charle,Daniell,Eri\n3907,17945,10091,10088,10132\n48,2,12,13,11'