将pandas dataframe列写入csv行交错排列

时间:2014-11-24 21:54:42

标签: python csv pandas

我有一个包含三列的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 ,,

提前感谢您提出任何建议。

1 个答案:

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