Python 3.x 在保留顺序的同时,将两列中的唯一值合并为一列
我有如下所示的四列数据。第1列中存在一些值,第1列中的一些值在第3列中再次重复。我想将第1列与第3列合并,同时删除第3列中的重复项。我还想保留列的顺序。第1列与第2列相关联,第3列与第4列相关联,因此,如果我可以在合并期间将第1列的项目与第2列相关联,将第3列的项目与第4列相关联,那就太好了。任何帮助都将不胜感激 输入表: 项目 价格 项目 价格 汽车 105 卡车 54822 椅子 20 笔 1. 杯 2. 汽车 105 玻璃 1.Python 3.x 在保留顺序的同时,将两列中的唯一值合并为一列,python-3.x,pandas,dataframe,csv,data-analysis,Python 3.x,Pandas,Dataframe,Csv,Data Analysis,我有如下所示的四列数据。第1列中存在一些值,第1列中的一些值在第3列中再次重复。我想将第1列与第3列合并,同时删除第3列中的重复项。我还想保留列的顺序。第1列与第2列相关联,第3列与第4列相关联,因此,如果我可以在合并期间将第1列的项目与第2列相关联,将第3列的项目与第4列相关联,那就太好了。任何帮助都将不胜感激 输入表: 项目 价格 项目 价格 汽车 105 卡车 54822 椅子 20 笔 1. 杯 2. 汽车 105 玻璃 1. 将输入表分为左右两部分后,我们可以非常简单地将左手项与未重复
将输入表分为左右两部分后,我们可以非常简单地将左手项与未重复的右手项连接起来:
你好请将相关数据显示为问题中的文本,而不是图像链接。@gupta-您的第1列已排序。如果第1列未排序,您是否也希望保留其顺序?亲爱的Armali,非常感谢您的帮助。它工作得很好。我不能因为分数低而提高投票率,但一旦我得到足够的分数,我会提高投票率。非常感谢你。最美好的祝福。guptaI有一个问题,如果我想对第5、6、7和8列重复相同的操作,我需要引入哪些更改?提前感谢。您是否希望A)仅用于第5、6、7和8列,或B)将所有列对1和2、3和4、5和6以及7和8组合在一个输出列对中?哪些列可以包含像上面1和2这样的空格?非常感谢您的回复。事实上,我有一些大文件(每个文件中有2400列),我想做同样的事情,比如第1-4列,第5-8列,第9-12列等等。因此,如果您能指导我如何只对第5、6、7和8列执行“A”,那将非常有帮助。提前谢谢。
import pandas as pd
# this initial section only recreates your sample input table
from io import StringIO
input = pd.read_table(StringIO("""| Item | Price | Item | Price |
|-------|-------|------|-------|
| Car | 105 | Truck| 54822 |
| Chair | 20 | Pen | 1 |
| Cup | 2 | Car | 105 |
| | | Glass| 1 |
"""), ' *\| *', engine='python', usecols=[1,2,3,4], skiprows=[1], keep_default_na=False)
input.columns = list(input.columns[:2])*2
# now separate the input table into the left and right part
left = input.iloc[:,:2].replace("", pd.NA).dropna().set_index('Item')
right = input.iloc[:,2:] .set_index('Item')
# finally construct the output table by concatenating without duplicates
output = pd.concat([left, right[~right.index.isin(left.index)]])
Price
Item
Car 105
Chair 20
Cup 2
Truck 54822
Pen 1
Glass 1