【问题标题】:How do I merge the contents of columns in a dataframe in Python?如何在 Python 中合并数据框中列的内容?
【发布时间】:2020-01-30 20:37:28
【问题描述】:

我是 python 和数据框的新手,所以我想知道是否有人知道我可以如何完成以下任务。我有一个包含许多列的数据框,其中一些列共享一个开头并有一个下划线后跟一个数字(bird_1、bird_2、bird_3)。我想基本上将所有共享开头的列合并为单个列,其中包含组成列中的所有值。然后我想为每个运行df[columns].value_counts

初始数据帧

最终数据帧

对于df[bird].value_counts(),A-L 的计数为 1
对于df[cat].value_counts(),A 的计数为 3,B 的计数为 4,C 的计数为 1

最终目标是获取每种列类型(鸟、猫、狗等)的唯一值的计数

【问题讨论】:

标签: python dataframe multiple-columns


【解决方案1】:

你可以这样做:

df.columns=[col.split("_")[0] for col in df.columns]

df=df.unstack().reset_index(1, drop=True).reset_index()
df["id"]=df.groupby("index").cumcount()
df=df.pivot(index="id", values=0, columns="index")

输出:

index bird  cat
id
0        A    A
1        B    A
2        C    A
3        D    B
4        E    B
5        F    B
6        G    B
7        H    C
8        I  NaN
9        J  NaN
10       K  NaN
11       L  NaN

从那里获取所有可能值的计数:

df.T.stack().reset_index(1, drop=True).reset_index().groupby(["index", 0]).size()

输出:

index  0
bird   A    1
       B    1
       C    1
       D    1
       E    1
       F    1
       G    1
       H    1
       I    1
       J    1
       K    1
       L    1
cat    A    3
       B    4
       C    1
dtype: int64

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-19
    • 2022-01-27
    • 2021-09-16
    • 2017-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-04
    相关资源
    最近更新 更多