它可能非常简单,但我只是找不到正确的措辞来在文档中搜索。
我有一个数据框。
此数据框是由我加载的电子表格创建的。有时电子表格有 Items1、Items2、Items3 作为列,有时只有 Items1(这取决于客户订购的商品的最大数量,每个商品都有自己的列。)。
我正在尝试将所有这些合并到一个主列“最终订单”中,该列将列出 Items1 ----> 最后一列的内容(我不想在每个列中输入此信息)有时,我只想让代码确定有多少列。)
示例:
Order Number | Name | Item1 | Item2 | Item3
7571983219 Jim Socks Shoes Hat
输出:
Order Number | Name | Item1 | Item2 | Item3 | Final Order
7571983219 Jim Socks Shoes Hat Socks,Shoes,Hat
如果有人能给我指出正确的方向,那就太棒了。
最佳答案
您可以使用apply :
df['Final Order'] = df.iloc[:, 2:].apply(','.join, 1)
print(df)
输出
Order Number Name Item1 Item2 Item3 Final Order
0 7571983219 Jim Socks Shoes Hat Socks,Shoes,Hat
这假设最后 n-2 行是要连接的行。作为替代方案,您可以排除行 Order Number
和 Name
:
columns = [column for column in df.columns if column not in ["Order Number", "Name"]]
df['Final Order'] = df[columns].apply(','.join, 1)
表达式:
','.join
是一个通过,
连接字符串序列的函数。
如果您缺少值,例如下面的 DataFrame 中的值:
Order Number Name Item1 Item2 Item3 Final Order
0 7571983219 Jim Socks NaN Hat Socks,Hat
执行以下操作:
df['Final Order'] = df[columns].apply(lambda x: ','.join(xi for xi in x if isinstance(xi, str)), 1)
关于python - 在 Pandas/Python 中合并从一个点开始的所有列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65135112/