从列表列表中提取元素-Python Pandas

时间:2018-10-14 21:38:46

标签: python pandas

我只有以下一列具有以下pandas数据框:

          column_name
0   cc_call_center_sk
1   cc_call_center_id
2   cc_rec_start_date
3     cc_rec_end_date

我要做的是提取熊猫列中的每个元素,并将其放入这样的字符串中:

my_string = ['cc_call_center_sk', 'cc_call_center_id', 'cc_rec_start_date', 
'cc_rec_end_date']

我尝试使用以下代码执行此操作:

my_list = column_names.values.tolist()

但是,输出是列表,而不是所期望的:

[['cc_call_center_sk'], ['cc_call_center_id'], ['cc_rec_start_date'], ['cc_rec_end_date']]

3 个答案:

答案 0 :(得分:5)

df.names.tolist()产生预期的结果:

>>> df.name.tolist()
['cc_call_center_sk', 'cc_call_center_id', 'cc_rec_start_date', 'cc_rec_end_date']

例如:

>>> df=pd.DataFrame([['cc_call_center_sk'], ['cc_call_center_id'], ['cc_rec_start_date'], ['cc_rec_end_date']], columns=['names'])
>>> df
               names
0  cc_call_center_sk
1  cc_call_center_id
2  cc_rec_start_date
3    cc_rec_end_date
>>> df = pd.DataFrame([['cc_call_center_sk'], ['cc_call_center_id'], ['cc_rec_start_date'], ['cc_rec_end_date']], columns=['names'])
>>> df.names.tolist()
['cc_call_center_sk', 'cc_call_center_id', 'cc_rec_start_date', 'cc_rec_end_date']

确定要在获取df.names之前不对值进行“分组”或执行其他“预处理”吗?

答案 1 :(得分:5)

您可以在tolist系列上使用'column_name'方法。请注意,my_string是字符串的列表,而不是字符串。您分配的名称不合适。

>>> import pandas as pd
>>> df = pd.DataFrame(['cc_call_center_sk', 'cc_call_center_id', 'cc_rec_start_date', 'cc_rec_end_date'],
...                   columns=['column_name'])
>>> df
         column_name
0  cc_call_center_sk
1  cc_call_center_id
2  cc_rec_start_date
3    cc_rec_end_date
>>>
>>> df['column_name'].tolist()
['cc_call_center_sk', 'cc_call_center_id', 'cc_rec_start_date', 'cc_rec_end_date']

如果您更喜欢点符号,则下面的代码会执行相同的操作。

>>> df.column_name.tolist()
['cc_call_center_sk', 'cc_call_center_id', 'cc_rec_start_date', 'cc_rec_end_date']

答案 2 :(得分:2)

假设您有一个名为df的数据框,如下所示:

df
    column_name
0   cc_call_center_sk
1   cc_call_center_id
2   cc_rec_start_date
3   cc_rec_end_date

然后:

my_string = df.column_name.values.tolist()

或:

my_string = df['column_name'].values.tolist()

将为您提供所需的结果。这是打印my_string时的结果

['cc_call_center_sk',
'cc_call_center_id',
'cc_rec_start_date',
'cc_rec_end_date']

您要执行的操作是这样:

my_strings = df.values.tolist()

这将为您提供一个列表列表,外部列表中的列表数量等于您数据框中的观测值数量。每个列表将包含与1个观测有关的所有特征信息。

我希望我能向您解释清楚。 谢谢