Python 对于带有f字符串和数据帧的循环
我需要尝试创建两个循环(必须分开): 循环1)对于每个水果:Python 对于带有f字符串和数据帧的循环,python,pandas,dataframe,for-loop,f-string,Python,Pandas,Dataframe,For Loop,F String,我需要尝试创建两个循环(必须分开): 循环1)对于每个水果: 如果那个水果是真的,就保持成排 删除日期重复的行(可以删除任一行) 将上述结果保存为每个水果的数据帧 循环2)对于创建的每个数据帧,在FROUT_分数上绘制日期: concat apple_score banana_score date apple banana 1 apple 0.400 0.400 2010-02-12 Tru
concat apple_score banana_score date apple banana
1 apple 0.400 0.400 2010-02-12 True False
2 banana 0.530 0.300 2010-01-12 False True
3 kiwi 0.532 0.200 2010-03-03 False False
4 bana 0.634 0.100 2010-03-03 False True
我试过:
水果=['苹果','香蕉','橘子']
对于水果中的水果:
选定的_行=df[df[水果]==True]
df_f'{fruit}'=选定的_行。删除重复项(subset='date')
对于水果中的水果:
图(x=“日期”,y=(f{fruit}{fruit}}得分),kind=“行”)
你应该按照@youyoun的建议做点什么:
dfs = {}
fruits = ['apple', 'banana']
for fruit in fruits:
selected_rows = df[df[ fruit ] == True ].drop_duplicates(subset='date')
dfs[f'df_{fruit}'] = selected_rows
for a,v in dfs.items():
print(a)
print(v)
输出:
df_apple
concat apple_score banana_score date apple banana
1 apple 0.4 0.4 2010-02-12 True False
df_banana
concat apple_score banana_score date apple banana
2 banana 0.530 0.3 2010-01-12 False True
4 bana 0.634 0.1 2010-03-03 False True
您是否正在尝试以编程方式定义变量的名称?例如,您希望得到一个名为df_apple的变量?您可以使用dict而不是基于for循环得到变量名:然后使用dict,
fruits_df={}
在for循环中使用fruits_df[fruit]=…
@Manakin我认为这行不通,因为他得到了“bana”在concat中,但列banana设置为true他希望在同一个水果之间删除重复的日期,另一个将删除具有相同日期的所有水果的重复。他不是在dataframe上循环,而是在fruits上循环。@Youyoun您可以在多个列上子集,只需将fruits
添加到。在这里删除重复项
并不复杂,也不需要迭代列表。更简单的是,您可以执行dfs={fruit,水果数据,df.groupby('fruit')中的数据。unique()
或者类似的东西。