Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/323.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
将字符串中的列名分配给dataframe-Python_Python_Pandas - Fatal编程技术网

将字符串中的列名分配给dataframe-Python

将字符串中的列名分配给dataframe-Python,python,pandas,Python,Pandas,我在Python中有以下字符串不是列表,而是字符串: a = ['cc_call_center_sk', 'cc_call_center_id', 'cc_rec_start_date', 'cc_rec_end_date'] 我还有以下数据帧: 0 1 2 3 0 AA AB BC CD 1 AZ ZR RT TN 我要做的是将字符串“a”分配给数据帧的列。我这样做: df.columns = a 但

我在Python中有以下字符串不是列表,而是字符串:

a = ['cc_call_center_sk', 'cc_call_center_id', 'cc_rec_start_date', 'cc_rec_end_date']
我还有以下数据帧:

   0      1      2      3
0  AA     AB     BC     CD
1  AZ     ZR     RT     TN
我要做的是将字符串“a”分配给数据帧的列。我这样做:

df.columns = a
但我得到了以下错误:

TypeError: Index(...) must be called with a collection of some kind, 
"['cc_call_center_sk', 'cc_call_center_id', 'cc_rec_start_date', 
'cc_rec_end_date']" was passed

我不能直接将字符串传递给df.columns。有什么想法吗?谢谢

您需要通过ast.literal\u eval将字符串转换为列表:

另一种解决方案,每个列名具有“剥离和拆分,最后删除”:

a = "['cc_call_center_sk', 'cc_call_center_id', 'cc_rec_start_date', 'cc_rec_end_date']"

#solution 1
df.columns = [x.strip("'") for x in a.strip("[]").split(', ')]
#solution 2
df.columns = pd.Index(a.strip('[]').split(', ')).str.strip("'")
或者更好地使用拆分:

现在:

print(df)
将是所需的输出,如:

  cc_call_center_sk cc_call_center_id cc_rec_start_date cc_rec_end_date
0                AA                AB                BC              CD
1                AZ                ZR                RT              TN

太神了谢谢@jezrael@GabrielaMartinez-不客气!我注意到首先我的答案被接受了,然后取消了接受,所以只询问是否是偶然的——现在可以只接受一个答案,而不是多个。你选择哪个答案取决于你自己;对不起
df.columns = map(lambda x:x[1:-1],a[1:-1].split(', '))
print(df)
  cc_call_center_sk cc_call_center_id cc_rec_start_date cc_rec_end_date
0                AA                AB                BC              CD
1                AZ                ZR                RT              TN