【发布时间】:2020-11-14 03:08:25
【问题描述】:
我需要尝试创建两个循环(必须分开):
LOOP 1) 对于每个水果:
- 如果该水果为真,则保留行
- 删除日期重复的行(可以删除任何一行)
- 将上述结果保存为每个水果的数据框
LOOP 2) 对于创建的每个数据框,在fruit_score 上绘制日期:
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
我试过了:
fruits = ['apple', 'banana', 'orange']
for fruit in fruits:
selected_rows = df[df[ fruit ] == True ]
df_f'{fruit}' = selected_rows.drop_duplicates(subset='date')
for fruit in fruits:
df_f'{fruit}'.plot(x="date", y=(f'{fruit}_score'), kind="line")
【问题讨论】:
-
您是否尝试以编程方式定义变量的名称?例如,您希望获得一个名为 df_apple 的变量?
-
您可以使用 dict 而不是基于 for 循环获取变量名:stackoverflow.com/a/11553769/1735729
-
然后使用字典,
fruits_df = {}并在你的 for 循环中使用fruits_df[fruit] = ... -
@Manakin 我不认为这会起作用,因为他在 concat 中得到了“bana”,但香蕉列设置为 true。 +他希望在同一水果之间按日期删除重复,另一个将删除所有具有相同日期的水果的重复。他不是在数据帧上循环,而是在水果上循环。
-
@Youyoun 您可以在多个列上进行子集化,只需将
fruits添加到.drop_duplicates这里没什么复杂的,也不需要遍历列表。
标签: python pandas dataframe for-loop f-string