【发布时间】:2020-02-16 12:25:23
【问题描述】:
我在将两列拆分为新行时遇到问题。
我的数据框是这样的
“involved”和“team_player_formation”各有 15 个字符串,需要分配到各自的行中。与“involved”的第一个字符串匹配“team_player_formation”的第一个字符串
我曾尝试遵循:Split (explode) pandas dataframe string entry to separate rows 并寻找拆分多列的方法,但没有成功
目前我已经能够将我的一个专栏与以下内容分开
df = pd.read_csv('Hello.csv', delimiter=';')
df = df.assign(involved=df['involved'].str.split(',')).explode('involved')
这给了我这样的东西:
matchId contestantId periodId typeId involved team_formation team_player_formation
0 d5321qxmnyf9004i049uf4pre 77tfx9me4aaqhzv78bmgsy9bg 2 40 b2492j7qzdo7g3ysxz6gq4g5x 4 1
0 d5321qxmnyf9004i049uf4pre 77tfx9me4aaqhzv78bmgsy9bg 2 40 b2492j7qzdo7g3ysxz6gq4g5x 4 1
0 d5321qxmnyf9004i049uf4pre 77tfx9me4aaqhzv78bmgsy9bg 2 40 b2492j7qzdo7g3ysxz6gq4g5x 4 1
0 d5321qxmnyf9004i049uf4pre 77tfx9me4aaqhzv78bmgsy9bg 2 40 b2492j7qzdo7g3ysxz6gq4g5x 4 1
0 d5321qxmnyf9004i049uf4pre 77tfx9me4aaqhzv78bmgsy9bg 2 40 b2492j7qzdo7g3ysxz6gq4g5x 4 1
..................
0 d5321qxmnyf9004i049uf4pre 77tfx9me4aaqhzv78bmgsy9bg 2 40 am3509ake84cde1xhb9264i22 4 0
0 d5321qxmnyf9004i049uf4pre 77tfx9me4aaqhzv78bmgsy9bg 2 40 am3509ake84cde1xhb9264i22 4 0
0 d5321qxmnyf9004i049uf4pre 77tfx9me4aaqhzv78bmgsy9bg 2 40 am3509ake84cde1xhb9264i22 4 0
0 d5321qxmnyf9004i049uf4pre 77tfx9me4aaqhzv78bmgsy9bg 2 40 am3509ake84cde1xhb9264i22 4 0
0 d5321qxmnyf9004i049uf4pre 77tfx9me4aaqhzv78bmgsy9bg 2 40 am3509ake84cde1xhb9264i22 4 0
但这只会将“involed”拆分为一个新列。
输出应该是这样的,我只显示了前 3 行。
谢谢!我希望你能提供帮助,我解释得很好。
【问题讨论】:
-
您可以将输入数据粘贴为文本吗?
-
根据 Scott 的要求,您还能注意一下您使用的是哪个 Pandas 版本吗?你想要的输出中重复的列标题是必要的,还是只是为了说明?谢谢!
-
大家好。是的,所有重复的列都是必需的。我正在将 python 3.7 与最新版本的 Pandas 一起使用。刚刚更新了。您看到的图片是我刚刚在 excel 中将其快速编辑为文本以用于说明目的的地方。但这只是我需要进行相同编辑的众多示例之一。谢谢!