如何解决每行CONCAT和DELETE nan,并将结果放在另一列
我只是学习了Panda的基础知识,我正在寻找一种方法来连接和删除nan值,并在数据框的新列中获取结果。
我知道如何合并,如何创建列表,但实际上却不知道如何迭代列,删除nan值,最后将结果合并到新列中。
我有一个具有不同编号的表,我想用熊猫创建一个列(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])
我的文件是Excel 联系人是我的数据框
我尝试遍历该列,而不是使用dropna并获得该列表的结果,但是它没有用,而且我没有更深入地研究。
Error with my list peace of code
我愿意接受任何建议,非常感谢!
解决方法
您可以定义自己的函数,该函数将选择的数字作为字符串返回,并以','分隔。
# 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)
pandas.Series.dropna返回一个NA值掉落的pandas.Series,因此您需要将其分配给变量。然后,您可以根据结果在数据框中创建一个新列。
,您不必为列创建列表。只需使用df [“ column_name”]。columns
df = df.dropna() 要么 df = df [df [“ columns_name”]!= np.nan]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。