[英]pandas.DataFrame: How to merge rows with a common column value in the same pandas.DataFrame
我有一个 pandas.DataFrame 看起来像这样:
指数 | 投影 | 问题 | 回答 |
---|---|---|---|
0 | 1 | 'q1' | 'str1' |
1 | 1 | 'q2' | 'str2' |
2 | 1 | 'q3' | 'str3' |
3 | 2 | 'q1' | 'str4' |
4 | 2 | 'q3' | 'str6' |
我想像这样格式化它:
指数 | 投影 | 问题1 | 答案1 | 问题2 | 答案2 | 问题3 | 答案3 |
---|---|---|---|---|---|---|---|
0 | 1 | 'q1' | 'str1' | 'q2' | 'str2' | 'q3' | 'str3' |
1 | 2 | 'q1' | 'str4' | 没有任何 | 没有任何 | 'q3' | 'str6' |
并非每个项目都有相同数量的问题,但每个项目都共享问题。 因此,当项目中没有特定问题时,我希望将单元格填充为 None 值。
我没有找到任何使用 join 或 concat 的方法,但我不知道如何正确使用它。
我想提高我的 pandas 技能,所以我的问题是:
有什么办法可以通过 pandas 处理或通过使用 iterrows 处理我的 DataFrame 来手动完成是唯一的方法吗?
谢谢 !
您可以在旋转之前使用cumcount
来获取后缀:
df['idx'] = df.groupby('projectid').cumcount() + 1
df = df.pivot(index='projectid',columns='idx')[['question','answer']]
df.columns = [''.join(map(str, col)) for col in df.columns]
print(df)
Output::
question1 question2 question3 answer1 answer2 answer3
projectid
1 'q1' 'q2' 'q3' 'str1' 'str2' 'str3'
2 'q1' 'q3' NaN 'str4' 'str6' NaN
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.