Python 2.7 如何在Python中将数据帧中的列值解压为列名

Python 2.7 如何在Python中将数据帧中的列值解压为列名,python-2.7,dataframe,Python 2.7,Dataframe,我有一个如下的数据框 Name Place Age Joe [NYC, Paris, Madrid] 33 Mary [Rome] 30 Jack [Paris, Madrid] 35 我希望数据帧中的输出为 Name NYC Paris Madrid Rome Age Joe Yes Yes Yes No 33 Mary No No No Yes 30 Jack No Ye

我有一个如下的数据框

Name Place                Age
Joe  [NYC, Paris, Madrid]  33
Mary [Rome]                30
Jack [Paris, Madrid]       35

我希望数据帧中的输出为

Name NYC Paris Madrid Rome Age
Joe  Yes  Yes   Yes     No  33
Mary  No   No    No    Yes  30
Jack  No  Yes   Yes     No  35
我试着用各种方法来做这件事,比如

cities = ['NYC', 'Rome', 'Madrid', 'Paris']
for city in cities:
  df_city = df.apply(lambda x: x in city if x==x else False)


df[city]=df_city   //Creating a column name based on the city. But this gives an error stating array size doesn’t match

我还尝试了以下方法


if(city=='NYC'):
  df[city].append("True")
elif(city=='Paris'):
  df[city].append("True")
elif(city=='Madrid'):
  df[city].append("True")
else(city=='Rome'):
  df[city].append("True")
但这只会让我

Name NYC Paris Madrid Rome Age
Joe   No  Yes    No     No  33
Mary  No   No    No     No  30
Jack  No  Yes    No     No  35

提前感谢

试试这个,这是操作的步骤

  • 按子DF数据帧的行应用填充函数
  • 迭代fill函数中每行的值(即城市名称)
  • 检查行值(城市)是否与bool_cities列名称匹配(bool_cities列为相同的城市名称)
  • 例如,“NYC”位于subdf的第0行和第0列,所以我们可以说“NYC”应该位于第0行。 因此,我们可以将布尔尤城市df,“纽约”列的第0位填为True

  • 输出

       Name  age  NYC Paris Madrid Rome
    0   Joe   33  Yes   Yes    Yes   No
    1  Mary   30   No    No     No  Yes
    2  Jack   35   No   Yes    Yes   No
    

    谢谢!这很有效。你有关于用户定义函数fill到底在做什么的文档/解释吗?@user3423407我已经添加了解释
       Name  age  NYC Paris Madrid Rome
    0   Joe   33  Yes   Yes    Yes   No
    1  Mary   30   No    No     No  Yes
    2  Jack   35   No   Yes    Yes   No