我想获取长列的统计信息,但是我遇到的问题是,列中的数据是不同的数据( A,B,C,D。)并且值相同(<我要数的strong> 2 )。
示例:
A
2
2
2
2
B
2
2
C
D
E
2
2
输出如下:
A 4
B 2
C
D
E 2
答案 0 :(得分:4)
检查Series
,s
在哪里等于您的幻数。通过相同的检查掩盖后的表格组,但向前填充。
u = s.eq('2') # `2` if it's not a string
u.groupby(s.mask(u).ffill()).sum()
A 4.0
B 2.0
C 0.0
D 0.0
E 2.0
dtype: float64
输入数据:
import pandas as pd
s = pd.Series(list('A2222B22CDE22'))
答案 1 :(得分:1)
我假设我们正在处理一个文本文件。 ('test_input.txt')
import pandas as pd
data = pd.read_csv('test_input.txt', header=None)
data = list(data[0])
final_out = dict()
last_item = None
for item in data:
try:
item = int(item)
except ValueError:
item = str(item)
if isinstance(item, str):
last_item = item
final_out[last_item] = 0
if isinstance(item, int):
final_out[last_item] += 1
print(final_out)
## {'A': 4, 'B': 2, 'C': 0, 'D': 0, 'E': 2}
print(pd.DataFrame.from_dict(final_out, orient='index'))
## 0
## A 4
## B 2
## C 0
## D 0
## E 2
# For order column, create first.
dataframe = dataframe.rename(columns={0:'unique'})
print(dataframe)
# Ordering
dataframe = dataframe.sort_values(by=['unique'])
print(dataframe)