【发布时间】:2022-07-26 22:05:24
【问题描述】:
我需要计算每一行中最常见的值,如果可能的话,我必须为每个值及其各自的计数创建列。
目前,我可以对每一行的值进行计数和分组。但是,我不知道是否可以为观察值生成列。
以下是数据示例:
| chordType | commonChord |
|---|---|
| triadeMaior, setima, triadeMenor, setimaMaior, triadeMaior, triadeMenor, triadeMenor, triadeMaior | triadeMaior (3), triadeMenor (3), setima (1), setimaMaior (1) |
| triadeMenor, setima, triadeMaior, setimaMenor, triadeMaior, triadeMaior, setima, setima, setimaMenor, triadeMaior, triadeMaior, setimaMaior, triadeMaior, triadeMaior, triadeMenor, setima, triadeMaior, sexta, triadeMaior, setimaMenor, triadeMaior, triadeMaior, setimaMenor | triadeMaior (11), setima (4), setimaMenor (4), triadeMenor (2), setimaMaior (1), sexta (1) |
为了生成上面的表格,我使用了以下代码:
df.chordType = df.chordType.str.split(", ").apply(lambda x: [v for v in map(str.strip, x)])
df = df[df.chordType.str.len() > 0]
df["commonChord"] = df.chordType.apply(
lambda x: ", ".join(
f"{a} ({b})" for a, b in pd.Series(x).value_counts().to_dict().items()
)
)
df.chordType = df.chordType.apply(", ".join)
df.head(5)
我的目标是获得一个表格,其中包含每个观察值的列(例如 triadMajor、triadMinor)和括号中的相应值 (3, 3)。
有可能吗?
【问题讨论】:
-
欢迎来到Stack Overflow.。当您遇到无法解决的特定问题时,最好使用此站点,一般性问题要求指导不符合 SO 的目标。请编辑您的问题以包含完整的Minimal Reproducible Example,其中包含数据和可以复制和粘贴的代码,并清楚地说明您当前的工作出了什么问题。