Pandas 数据透视表如何添加带有下拉行的字符串比较函数列

问题描述 投票:0回答:1

我使用 pandas 及其数据透视表函数创建了数据透视表,我编写了这些数据透视表函数来表示我公司中的一些计算机系统和大量元数据。我想查看这些数据并突出显示未遵循各种内部规则的地方,例如命名约定、版本过时等。

# iDistinct_count counts distinct strings 
# iValues lists out unique values
kdPT = pd.pivot_table(df, index="iAID", values=["Application", "Env"], aggfunc=[iDistinct_count, iValues], margins=False)
kdPT.to_excel(reportXLSX, sheet_name="app", startrow=0)

在最简单的情况下,我想确保所有 AppName 值均为大写。

AppName | isItUpperCase
apaCHE  | No
DATABASE| Yes

我知道如何旋转数据并为总计和百分比创建新列,但对于字符串公式,我如何添加一个字符串公式,例如 =exact(a2m upper(a2)) 来突出显示包含小写字母的单元格

最后我希望我的excel看起来像这样......

   A       | B
1: AppName | isItUpperCase
2: apaCHE  | =EXACT(A2,UPPER(A2))  
3: DATABASE| =EXACT(A3,UPPER(A4))  

我尝试了数据透视表和 lamda,但基于数值示例......

kdPT.loc\[:, 'Appname all upper'\] = \[f"=EXACT(E{c},UPPER(E{c}))" for c in kdPT.shape\[0\]\]
python pandas excel-formula pivot-table
1个回答
0
投票

你可以使用

upper
:

df["isItUpperCase"] = df["AppName"].eq(df["AppName"].str.upper())

>>> df
    AppName  isItUpperCase
0    apaCHE          False
1  DATABASE           True
输入df:
df = pd.DataFrame({"AppName": ["apaCHE","DATABASE"]})
© www.soinside.com 2019 - 2024. All rights reserved.