【发布时间】:2020-11-29 15:26:40
【问题描述】:
我有一个这样的数据框:
data = {"Name": ["Jason", "Jason", "Jason", "Jason", "Pat", "Amy", "Amy"]}
df = pd.DataFrame(data)
Name
0 Jason
1 Jason
2 Jason
3 Jason
4 Pat
5 Amy
6 Amy
我需要它看起来像这样:
Name Name2 Name3
0 Jason Nan Nan
1 Jason Nan Nan
2 Jason Nan Nan
3 Jason Nan Nan
4 Nan Pat Nan
5 Nan Nan Amy
6 Nan Nan Amy
我可以按照我想要的方向手动创建一些东西,但不确定如何通过在“名称”列中找到的唯一值的计数来自动创建新列。我还需要新列中的值位于同一行索引上。我发现列表也总是会发生变化,所以使用 'unique_names[0]' 并不总是有效。这是我到目前为止尝试过但卡住的方法。此外,这只是一列的示例,但实际上会有大约 17 个具有不同值的类似列。谢谢
unique_names = list(set([p for p in df["Name"]]))
# ['Pat', 'Jason', 'Amy']
count = len(unique_names) # Trying to fit this somewhere to give it a count to refer to
# 3
for item in df["name"]:
if unique_names[0] == item:
df["new_name"] = pd.Series(item)
Name New_name
0 Jason Pat
1 Jason NaN
2 Jason NaN
3 Jason NaN
4 Pat NaN
5 Amy NaN
6 Amy NaN
【问题讨论】: