我有一个包含三列的pandas数据框,比如说:A,B,C我希望重新排列数据并将其输出到CSV中,以便C中具有相同值的所有值共享一行。因此,例如,如果我的代码块设计如下(例如,不是我用这种方式设计):'
check=pd.DataFrame(columns=['A','B', 'C'])
for i in range(8):
check.loc[1]=[1,11,10]
check.loc[2]=[1,21,23]
check.loc[3]=[1,23,32]
check.loc[4]=[2,21,41]
check.loc[5]=[2,21,11]
check.loc[6]=[3,21,29]
check.loc[7]=[4,21,43]
check.loc[8]=[4,21,52]
` 我希望输出看起来像CSV中的以下之一: 这样:
1 ,,,
10,23,32,
2 ,,,
41,11 ,,
3 ,,,
29 ,,,
4 ,,,
43,52 ,,
OR:
1,10,23,32
2,41,11,
3,29 ,,
4,43,52,
OR:
10,23,32,
41,11 ,,
29 ,,,
43,52 ,,
提前感谢您提出任何建议。
答案 0 :(得分:1)
嗯......有点难以理解你真正在做什么。但看起来您根本没有输出B
列。第一步是以可接受的方式安排您的数据。对于A
的每个值,这似乎是一行。然后出口。
获取上一个示例输出的一种方法是创建列表列表,其中每个列表项都是所需的行。我会通过A
对数据进行分组然后迭代组来实现这一点:
g = check.groupby('A')
bigList = []
for group in g:
rowList = []
for c in group[1].C.iteritems():
rowList.append(c[1])
bigList.append( rowList )
现在bigList
是一个列表清单。所以我们可以将它转换为Pandas数据帧,然后保存到csv:
outData = pd.DataFrame(bigList)
outData.to_csv('myFile.csv', index=False)
您可以采用上述循环并对其进行修改以执行其他示例。这将是你的第二个:
bigList = []
for group in g:
rowList = []
rowList.append(group[0])
for c in group[1].C.iteritems():
rowList.append(c[1])
bigList.append( rowList )