[英]Add new 'x' number of columns in data frame using max value in specific column using python pandas
[英]count number of a specific string in entire data frame in Pandas and add its value in a new column
我有一个 5 列数据框,我需要找出第一列 (A) 中的每个元素重复多少次,并将该元素前面的数量添加到新列 (F) 中,例如第一列中的“a” (A) 在整个数据框中重复了 5 次,因此需要创建 column() 并在第 0 行的相关单元格中添加 5,依此类推。 感谢您的支持。 我是 python 的新手,需要您的宝贵意见。
以下是原始数据框:
A B C D E
a -
b a -
c a -
d b a -
e d b a -
首选数据框是:
A B C D E F
a - 5
b a - 3
c a - 1
d b a - 2
e d b a - 1
到目前为止,我已经在下面的行中进行了编码,但我无法创建具有总和的新列。
import pandas as pd
import numpy as np
df = pd.DataFrame({'A': {0: 'a', 1: 'b', 2: 'c', 3: 'd', 4: 'e'},
'B': {0: '-', 1: 'a', 2: 'a', 3: 'b', 4: 'd'}})
df['C'] = np.where(df['B'].isin(df['A'].values), df['B'], np.nan)
df['C'] = df['C'].map(dict(zip(df.A.values, df.B.values)))
df['D'] = np.where(df['C'].isin(df['B'].values), df['C'], np.nan)
df['D'] = df['D'].map(dict(zip(df.B.values, df['C'].values)))
df['E'] = np.where(df['D'].isin(df['C'].values), df['D'], np.nan)
df['E'] = df['E'].map(dict(zip(df['C'].values, df['D'].values)))
for cell in df['A']:
print(cell)
m=df.eq(cell).sum()
# pd.DataFrame([m.values], columns=m.index)
dep=sum(m)
print(dep)
print(df)
以下是上述代码的输出:
a 5 b 3 c 1 d 2 e 1
A B C D E
a -
b a -
c a -
d b a -
e d b a -
df['F'] = [np.count_nonzero(df.values == x) for x in df['A']]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.