我可以对5列pandas数据帧中的前310行求和,并使用以下内容获得整洁的摘要:
select table_name,
to_number(extractvalue(xmltype(dbms_xmlgen.getxml('select
count(*) c from '||owner||'.'||table_name)),'/ROWSET/ROW/C')) as count
from all_tables
是否有一种简单的方法可以将我选择的某列中的前310行相加?我只是无法弄清楚如何在表达式中组合列选择和行切片选择。按列名指定列是理想的,但列索引也可以。
为了总结第5列的第1 310行,我试了
df.[0:310].sum
但刚从该列打印出310行。谢谢。
答案 0 :(得分:2)
你需要这样的东西:
import pandas as pd
data = {'x':[1,2,3,4,5], 'y':[2,5,7,9,11], 'z':[2,6,7,3,4]}
df=pd.DataFrame(data)
使用列列表和行:
df.loc[0:310][['x','z']].sum()
输出:
x 15
z 22
dtype: int64
答案 1 :(得分:2)
对于按名称排列的DataFrame.iloc
位置,我认为需要get_indexer
选择行:
#data borrowed from Akshay Nevrekar answer, but changed index values
data = {'x':[1,2,3,4,5],
'y':[2,5,7,9,11],
'z':[2,6,7,3,4]}
df=pd.DataFrame(data, index=list('abcde'))
print (df)
x y z
a 1 2 2
b 2 5 6
c 3 7 7
d 4 9 3
e 5 11 4
a = df.iloc[:3, df.columns.get_indexer(['x','z'])].sum()
与...相同:
a = df.iloc[:3, [0,2]].sum()
print (a)
x 6
z 15
dtype: int64
<强>详细强>:
print (df.iloc[:3, df.columns.get_indexer(['x','z'])])
x z
a 1 2
b 2 6
c 3 7
如果只需要一列使用get_loc
作为职位:
b = df.iloc[:3, df.columns.get_loc('x')].sum()
与...相同:
b = df.iloc[:3, 0].sum()
print (b)
6
<强>详细强>:
print (df.iloc[:3, df.columns.get_loc('x')])
a 1
b 2
c 3
Name: x, dtype: int64