2017-08-15 27 views
11

Tôi có một DataFrameTóm cột để tạo thành một dataframe mới

   A    B    C   D 
2015-07-18 4.534390e+05 2.990611e+05 5.706540e+05 4.554383e+05 
2015-07-22 3.991351e+05 2.606576e+05 3.876394e+05 4.019723e+05 
2015-08-07 1.085791e+05 8.215599e+04 1.356295e+05 1.096541e+05 
2015-08-19 1.397305e+06 8.681048e+05 1.672141e+06 1.403100e+06 
... 

tôi chỉ đơn giản muốn tổng hợp tất cả các cột để có được một dataframe mới

 A B C D 
sum s s s s 

Với số tiền theo cột Và sau đó in nó với to_csv() . Khi nào sử dụng

df.sum(axis=0) 
print(df) 


A  9.099377e+06 
B  5.897003e+06 
C  1.049932e+07 
D  9.208681e+06 
dtype: float64 
+1

Tôi hiểu nửa đầu yêu cầu. Phần thứ hai là không rõ ràng với tôi. – pylang

Trả lời

12

Bạn có thể chuyển đổi df.sum() để DataFrame và transpose nó:

In [39]: df.sum().to_frame('sum').T 
Out[39]: 
      A   B   C   D 
sum 2358458.2 1509979.49 2766063.9 2370164.7 
3

Sử dụng DataFrame constructor:

df = pd.DataFrame(df.sum().values.reshape(-1, len(df.columns)), 
        columns=df.columns, 
        index=['sum']) 
print (df) 
      A   B   C   D 
sum 2358458.2 1509979.49 2766063.9 2370164.7 
4

Một phiên bản hơi ngắn hơn pd.DataFrame là (với tín dụng cho jezrael để đơn giản hóa):

In [120]: pd.DataFrame([df.sum()], index=['sum']) 
Out[120]: 
      A   B   C   D 
sum 2358458.2 1509979.49 2766063.9 2370164.7 
+0

Hmmm, sau đó 'pd.DataFrame ([df.sum()], index = ['sum'])' là đơn giản nhất – jezrael

0

Tôi nghĩ đơn giản nhất là df.agg([sum])

df.agg([sum]) 
Out[40]: 
      A   B   C   D 
sum 2358458.2 1509979.49 2766063.9 2370164.7 
Các vấn đề liên quan