Python 熊猫 to_csv 问题

时间:2021-03-14 18:30:36

标签: python pandas

我正在运行将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。 有什么帮助吗?

1 个答案:

答案 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'