Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 在保留顺序的同时,将两列中的唯一值合并为一列_Python 3.x_Pandas_Dataframe_Csv_Data Analysis - Fatal编程技术网

Python 3.x 在保留顺序的同时,将两列中的唯一值合并为一列

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. 将输入表分为左右两部分后,我们可以非常简单地将左手项与未重复

我有如下所示的四列数据。第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