【发布时间】:2019-11-18 11:29:49
【问题描述】:
我有两个熊猫数据框。在 df1 我有一个字符串列,其中包含一个有限的唯一值列表。我想让这些值成为一个列表,然后循环并在 df2 上附加一个新列。该值将遍历列表,然后在第二个数据帧的整个范围内重新开始。
df1
my_value
0 A
1 B
2 C
df2
color
0 red
1 orange
2 yellow
3 green
4 blue
5 indigo
6 violet
7 maroon
8 brown
9 black
What I want
color my_value
0 red A
1 orange B
2 yellow C
3 green A
4 blue B
5 indigo C
6 violet A
7 maroon B
8 brown C
9 black A
#create list
my_list = pd.Series(df1.my_value.values).to_list()
# create column
my_new_column = []
for i in range(len(df2)):
assigned_value = my_list[i]
my_new_column.append(assigned_value)
df2['my_new_column'] = my_new_column
return df2
列表索引和范围的长度不同,这就是我要挂断的地方。
这非常直接,我完全忽略了解决方案,如果在其他地方得到回答,请随时将我链接到另一个问题。感谢您的输入!
【问题讨论】:
-
df['new'] = (df.index % 3).map({0:"A",1:"B",2:"C"}) -
谢谢!我一直在玩弄 mod。您的答案最终奏效了,只是替换了地图中的列,而不是显式调用值。
标签: python python-3.x pandas for-loop