【问题标题】: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