0
這是一個非常基本的問題。我想以某種方式組織一個csv。到目前爲止,我已經達到了我想要的水平,而且速度也非常快。在行中添加一行並在python中排序
import numpy as np
import pandas as pd
import pandas.util.testing as tm; tm.N = 3
data = pd.DataFrame.from_csv('MYDATA.csv')
byqualityissue = data.groupby(["Name","Type"]).size()
df = pd.DataFrame(bytype)
formatted = df.unstack(level=-1)
formatted[np.isnan(formatted)] = 0
formatted.to_csv('bytype.csv', header=True)
byType的是這樣的:
Type Type1 Type2 Type3
Name
Company 1 10 0 3
Company 2 4 23 3
Company 3 3 2 0
不過,我需要它有序,使公司具有最大總(行之和)將在頂部。在這種情況下,它應該是頂部的公司2,然後是公司1,然後是公司3.它應該只選擇前二十個客戶,並由我的其他Python代碼讀取。
Name, Type1, Type2, Type3
Company 2, 4, 23, 3
Company 1, 10, 0, 3
Company 3, 3, 2, 0
我認爲最好的辦法是將總數加在另一列然後按降序排序。爲了做到這一點,我寫了這一行:
sorted = np.sum(formatted, axis=1)
它成功輸出總數。我看着How to add a new column to a CSV file using Python?
所以寫道:
with open('bytype.csv') as csvinput:
with open('bytype2.csv','w') as csvoutput:
writer = csv.writer(csvoutput, lineterminator='\n')
reader = csv.reader(csvinput)
all = []
row = next(reader)
row.append('Total')
all.append(row)
for row in reader:
row.append(np.sum(formatted, axis=1))
all.append(row)
writer.writerows(all)
但我不僅沒有得到一個輸出bytype2,但這種方法似乎意味着重讀CSV,然後追加列,然後我我們仍然需要對它們進行排序。必須有一個更簡單的方法來做到這一點,我錯過了。
只需將列添加到您的數據幀,DF [關鍵] =我知道什麼 –
@PadraicCunningham它可能是那樣簡單,但究竟如何你加了嗎? df [newkeytitle] =排序?它如何知道數據框中的哪個位置?上週我一直在教自己python,但我還是很新的。 – jenryb
是的,只需使用新的密鑰名稱作爲密鑰,無論您想要添加什麼值,都可以共享一點點,如果您的文件? –