CONCAT和DELETE nan,并在另一列中得到结果



我刚刚在Panda中学习了基本知识,我正在寻找一种方法来连接和删除nan值,并在数据帧的新列中获得结果。

我知道如何连接,如何创建列表,但不知道如何迭代遍历列,删除nan值,最后将结果连接到新列中。

我有一个不同编号的表,我想用panda(CONTACT[CALLER_PHONE]=…(创建一个列,其中包含每行的所有编号,并且没有空值。我想要在表格中的结果示例:

Number1     Number2      Number3      CALLER_PHONE
0675416952  0675416941   0675416930   0675416952,067541694,0675416930
Nan         0675417080   0675417082   0675417080,0675417082
Nan         Nan          0675837759   0675837759

我的代码:

import pandas as pd
CONTACT = pd.read_excel('O:/16_GIS_Team/X_Tools/Model Builder And Parcels Package/Contact_20200807/CONTACT_20200807.xlsx')
pd.set_option('display.max_columns', None)
pd.set_option('display.max_rows', None)
CONTACT['CALLER_NAME'] = CONTACT['First Name'].str.cat(CONTACT['Last Name'], sep =" ")
cols = CONTACT[['Work Phone','Mobile','Home Phone','SMS marketing phone','Other Phone Number','Details (USA): Caller Phone']]
print(cols)
columns = list(cols)
for i in columns:
Clean_Columns = cols.dropna(axis=1, how='any')
print (Clean_Columns[i][2])

我的文件是ExcelCONTACT是我的数据帧

我试着对列进行迭代,而不是使用dropna并用列表获得一个结果,但它不起作用,我也没有深入挖掘。

错误与我的列表和平代码

我愿意接受任何建议,非常感谢您提前告知!

您可以定义自己的函数,该函数将您选择的数字作为字符串返回,其中数字用","分隔。

# get the data
cols = CONTACT[['Work Phone','Mobile','Home Phone','SMS marketing phone','Other Phone Number','Details (USA): Caller Phone']]
def concatenate_numbers(s):
"""Remove all NA values from a series and return as a string joined by ','"""
s = s.dropna()
return ','.join([str(number) for number in s])
# create a new column by applying the above function to every row of the dataframe.
df['all_phones'] = df.apply(concatenate_numbers, axis=1)

熊猫。Series.dropna归还了一只熊猫。具有已删除NA值的序列,因此需要将其分配给变量。然后,您可以根据结果在数据帧中创建一个新列。

您不必为列创建列表。只需使用df["column_name"]。columns

df=df.dropna((或df=df[df["columns_name"]!=np.nan]

最新更新