将字符串与数据框中的每一行连接起来并对其应用函数?

时间:2019-06-26 15:23:20

标签: python pandas dataframe

我有一个数据框,其中包含各种数据-字符串,整数和日期对象。

我已经有一段代码(deal_value(val)),用于标识val的类型并将其设置为字符串。我需要能够将其应用于我现在拥有的数据框中的所有单元格。

在那之后,我需要将行值与数据框中的行名连接起来。

我查看了这两种方法的apply函数,但无法弄清楚在两种情况下如何使用它


数据框示例:

     name    age    dob
0    A        10    20-Jun-1969

我希望数据框为:

    name         age         dob
0    A name     10 age      20-Jun-1969 dob

我的函数deal_value会接受每个单元格元素,并使它们很好地串联成一个字符串, 所以最终我希望它是这样的:

"A name, 10 age,20-Jun-1969 AND (row-2) AND (row-3)......."

2 个答案:

答案 0 :(得分:1)

import pandas

df = pandas.DataFrame({'name': 'A', 'age': 10, 'date_of_birth': '20-Jun-1969'}, index=[0])

for col in list(df.columns): 
    df[col] = df[col].apply(lambda x: ' '.join([str(col), str(x)]))


df.head()

输出

    name     age        date_of_birth
0   name A   age 10     date_of_birth 20-Jun-1969

字符串输出:


df_to_string = df.to_string(header=False,
                            index=False,
                            index_names=False).split('\n')
vals = [ ', '.join(element.lstrip().rstrip().split('  ')) for element in df_to_string]
vals_str = ' And '.join(vals)

print(vals_str)

输出:

'name A, age 10, date_of_birth 20-Jun-1969 And name B,  age 5, date_of_birth 21-Jun-1969'

答案 1 :(得分:1)

似乎您只需要:

df.astype(str).add(' '+df.columns)

     name     age              dob
0  A name  10 age  20-Jun-1969 dob