将字符串中的列名分配给dataframe-Python
我在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 但
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