我的数据看起来像这样
Name Title ID
ED HHH 11111
ED HHH 11112
ED HHH 11113
ED HHH 11114
AD BBB 11119
AD BBB 11133
我希望它看起来像这样(例如,所有ID都在一个单元格中,以逗号分隔)
Name Title ID
ED HHH 11111, 11112, 11113, 11114
AD BBB 11119, 11133
所以我尝试了一些不同的熊猫选项,但似乎大多数人会尝试将ID放在我不想要的列中。
我还合并了Names
和Title
字段,并尝试了下面的代码,但我得到'无法使用空键标记索引',我不确定此选项是否可以正常工作。
df_long.pivot(index='Combined', values='ID')
我也是这样尝试(下图),但它花了6个多小时(150万行)并且仍然没有完成,当可能有更好的方法时,这并不是理想的表现。
for x in df.values:
for y in df1_list:
if x[2] == y[2]:
if x[3] == y[3]:
if x[4] not in y[4]:
y[4].append(x[4])
我的问题的任何想法或方向使用熊猫或熊猫以外的其他解决方案?
答案 0 :(得分:1)
这展示了如何使用lambda在pandas中将多个单元连接在一起: Combine two columns of text in dataframe in pandas/python
它可以在pd.pivot_table
的import numpy as np
import pandas as pd
from pandas import Series, DataFrame
# here i copied your data frame and assign it to the variable "df"
df = pd.read_clipboard()
df['ID'] = df['ID'].astype('str')
pd.pivot_table(df,index=['Name','Title'],values='ID',aggfunc=lambda x: ', '.join(x))
Out[15]:
Name Title
AD BBB 11119, 11133
ED HHH 11111, 11112, 11113, 11114
Name: ID, dtype: object
参数中使用,如下所示:
fail()
您可能必须事后对索引进行排序;看起来熊猫选择的方式与您展示的输出方式不同。