Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/303.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 在包含4列的数据框中创建仅包含1列的数据框_Python_Pandas - Fatal编程技术网

Python 在包含4列的数据框中创建仅包含1列的数据框

Python 在包含4列的数据框中创建仅包含1列的数据框,python,pandas,Python,Pandas,我有一个包含4列的数据框(它们都是零件号)。我只想让这个数据帧只有一列,其中包含4个原始列中的所有值(除了删除的重复项)。这就是我所做的。我没有收到任何错误消息,但由于某种原因,在进行合并时,我一直得到4列而不是1列。首先我写了这样一段话: Supplier_Part_No = Supplier_Part_Numbers_Rename[['Supplier_Part_No']].copy() Supplier_Part_No_1 = Supplier_Part_Numbers_Rename[['

我有一个包含4列的数据框(它们都是零件号)。我只想让这个数据帧只有一列,其中包含4个原始列中的所有值(除了删除的重复项)。这就是我所做的。我没有收到任何错误消息,但由于某种原因,在进行合并时,我一直得到4列而不是1列。首先我写了这样一段话:

Supplier_Part_No = Supplier_Part_Numbers_Rename[['Supplier_Part_No']].copy()
Supplier_Part_No_1 = Supplier_Part_Numbers_Rename[['Supplier_Part_No..1']].copy()
Supplier_Part_No_2 = Supplier_Part_Numbers_Rename[['Supplier_Part_No..2']].copy()
Supplier_Part_No_3 = Supplier_Part_Numbers_Rename[['Supplier_Part_No..3']].copy()
创建了4个数据帧。然后我将它们合并回来,目的是在一个数据帧中得到一个单独的列。我不知道为什么它总是给我4,我也试着做轴1,但没有帮助。不知道为什么它不是只给我一列而是四列:

Supplier_Parts_Combined = pd.concat([Supplier_Part_No, Supplier_Part_No_1,Supplier_Part_No_2, Supplier_Part_No_3], axis = 0)

Supplier_Parts_Combined
这是你想要的吗

df = pd.DataFrame(np.random.randint(0,5,size=(5, 4)), columns=list('ABCD'))

    A   B   C   D
0   1   4   2   2
1   4   0   3   2
2   1   0   1   0
3   3   4   3   4
4   0   2   4   2


df['merged'] = df.astype(str).apply(lambda x: ''.join(set(x)), axis = 1)

    A   B   C   D   new
0   1   4   2   2   241
1   4   0   3   2   2430
2   1   0   1   0   01
3   3   4   3   4   43
4   0   2   4   2   204
编辑:

考虑一下这个df

df = pd.DataFrame({'val1': ['abc', np.nan], 'val2': ['xyz', 'pqr'], 'val3': ['lmn', 'abc'], 'val4': [np.nan, np.nan]})

    val1    val2    val3    val4
0   abc     xyz     lmn     NaN
1   NaN     pqr     abc     NaN

x = df.values.ravel()
np.unique(x[~pd.isnull(x)])
我会给你

array(['abc', 'lmn', 'pqr', 'xyz'], dtype=object)
只需使用变量名(以前的列名)和值列(以前的宽格式列值),即可将数据重塑为长格式。由于您只需要一列无NAs,请使用
dropna
[[…]]
索引:

from io import StringIO
import pandas as pd

txt = """
Supplier_Part_1     Supplier_Part_2     Supplier_Part_3          
abc                        cde                        NA 
NA                         gbc                        NA 
"""

df = pd.read_table(StringIO(txt), sep="\s+")
print(df)

#   Supplier_Part_1 Supplier_Part_2  Supplier_Part_3
# 0             abc             cde              NaN
# 1             NaN             gbc              NaN


rdf = pd.melt(df, var_name="Supplier_Part_ID", value_name="Supplier_Part").\
              dropna().reset_index()[['Supplier_Part']]
print(rdf)

#   Supplier_Part
# 0           abc
# 1           cde
# 2           gbc

你想要一列中的所有值用逗号分隔吗?不,我不想要任何形式的分隔,但是是的,所有值都在一列中我不确定我是否遵循了你的尝试,我正在尝试这样做:Supplier\u Part I Supplier\u Part\u 2 Supplier Part\u 3I正在使用“”联接每行中的所有唯一值。还是不确定这是否是你想要的。如果你在问题中发布你的df.head()会更容易。不,我想要一些更基本的东西。假设您有3列,其中有10个不同的值。我只想有一列,在该列中有这10个值。例如,列A包含3行:3、5、8。B列包含3行:4、7、19,C列包含3行:1、2、6。我想要一个列,它的行中列出了,1,2,3,4,5,6,7,19。。。这是你能帮忙的所有机会?我一直试图解决这个问题很长一段时间,并没有走远。非常感谢。