[英]Change colour of text of a column based on the value of another column within the same dataframe using pandas stylers
[英]Combining text values in a pandas dataframe column based on same value in another column
我有数据,其中可能有不同的人与同一个条目相关联。
我需要将这两个条目组合在一起,并注意有两个人在上面。
例如,数据可能如下所示:
Name Share_ID value1 value2 value3 etc.
Joe 0001 1 2 4
Ann 0002 2 5 2
Mel 0001 1 2 4
output 需要:
Name Share_ID value1 value2 value3 etc.
Joe, Mel 0001 1 2 4
Ann 0002 2 5 2
我尝试使用 groupby
df1.groupby(['Share_ID'])['Name'].apply(', '.join).reset_index()
但我的结果只是:
Share_ID Name
0001 Joe, Mel
0002 Ann
Name 列正确组合,但我丢失了其他列。 请注意,我不希望对其他列应用任何内容——Joe 和 Ann 的记录是相同的。
我认为我的方法已经关闭,但我不确定要使用什么 function。
从您离开的地方开始,您可以将生成的数据集加入到初始 DataFrame:
# Find the merged name data set and rename the 'Name' column
names = df1.groupby(['Share_ID'])['Name'].apply(', '.join).reset_index().rename(columns={'Name':'Merged Name'})
# Join it to the original dataset
df1 = df1.merge(names, on='Share_ID')
# Drop the 'Name' column then drop duplicates.
df1 = df1.drop(columns=['Name']).drop_duplicates()
您可以将得到的结果与原始 dataframe 合并,然后删除重复项:
pd.merge(df1.groupby(['Share_ID'])['Name'].apply(', '.join).reset_index(), df1, on='Share_ID').drop_duplicates(subset='Share_ID')
在分组依据中不使用values
字段的任何特殊原因?
df1.groupby(['Share_ID','value1', 'value2', 'value3'])['Name'].apply(', '.join).reset_index()
这将给出所需的 output。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.