python - Python Pandas 将值分组为 2 列
问题描述
如下所示的数据框。名称分为 5 组,由 A 列中的常见链接。
我想对名称进行分组。我试过了:
import pandas as pd
data = {'A': ["James","James","James","Edward","Edward","Thomas","Thomas","Jason","Jason","Jason","Brian","Brian"],
'B' : ["John","Michael","William","David","Joseph","Christopher","Daniel","George","Kenneth","Steven","Ronald","Anthony"]}
df = pd.DataFrame(data)
df_1 = df.groupby('A')['B'].apply(list)
df_1 = df_1.to_frame().reset_index()
for index, row in df_1.iterrows():
print (row['A'], row['B'])
输出是:
('Brian', ['Ronald', 'Anthony'])
('Edward', ['David', 'Joseph'])
('James', ['John', 'Michael', 'William'])
('Jason', ['George', 'Kenneth', 'Steven'])
('Thomas', ['Christopher', 'Daniel'])
但我希望每个组都有一个列表(如果有一种自动方法为每个列表分配一个变量会更好),例如:
['Brian', 'Ronald', 'Anthony']
['Edward', 'David', 'Joseph']
['James', 'John', 'Michael', 'William']
['Jason', 'George', 'Kenneth', 'Steven']
['Thomas', 'Christopher', 'Daniel']
我试过row['B'].append(row['A'])
但它返回None
。
将它们分组的正确方法是什么?谢谢你。
解决方案
您可以A
在属性中添加分组列的GroupBy.apply
值.name
:
s = df.groupby('A')['B'].apply(lambda x: [x.name] + list(x))
print (s)
A
Brian [Brian, Ronald, Anthony]
Edward [Edward, David, Joseph]
James [James, John, Michael, William]
Jason [Jason, George, Kenneth, Steven]
Thomas [Thomas, Christopher, Daniel]
Name: B, dtype: object
推荐阅读
- r - 你如何使情节误差条遵循色标?
- c# - context 不保存数据,或将删除数据
- java - 当我选择收藏图像时,然后向上滚动并自动选择多个图像
- xml - 如何读取 xml 节点并替换 groovy 脚本中的节点值?
- javascript - 添加javascript数字没有效果
- swift - SwiftUI - 为图像的一个边缘添加边框
- alexa - 语音 Alexa 智能家居错误响应消息是什么?
- javascript - JavaScript:加载.txt文件并拆分后数组末尾的空元素
- android-studio - 颤振在 android studio 上是否支持 ios 或 iphone?
- scala - 如何从镶木地板文件中删除第一行?