我似乎无法找到.loc行为背后的原因.我知道它是基于标签的,所以如果我遍历Index对象,下面的最小例子应该可行.但事实并非如此.我当然用Google搜索,但我需要一些已经掌握索引的人的其他解释.
import datetime
import pandas as pd
dict_weekday = {1: 'MON', 2: 'TUE', 3: 'WED', 4: 'THU', 5: 'FRI', 6: 'SAT', 7: 'SUN'}
df = pd.DataFrame(pd.date_range(datetime.date(2014, 1, 1), datetime.date(2014, 1, 15), freq='D'), columns=['Date'])
df['Weekday'] = df['Date'].apply(lambda x: dict_weekday[x.isoweekday()])
for idx in df.index:
print df.loc[idx, 'Weekday']
Run Code Online (Sandbox Code Playgroud) 我有两个数据框。除了一列之外,它们是相同的。我想根据第一个数据帧的平均值更改第二个数据帧的列。对于后者,我必须使用 groupby,但随后我不知道如何反转。下面是一个最小的示例,在此特定示例中 df_two 最终应与 df_one 相同。我的问题是如何从 tmp 到 df2_new - 请参阅下面的代码。
import pandas as pd
def foo(df1, df2):
# Group by A
groupsA_one = dict(list(df1.groupby('A', as_index=False)))
groupsA_two = dict(list(df2.groupby('A', as_index=False)))
for key_A in groupsA_one:
# Group by B
groupsB_one = dict(list(groupsA_one[key_A].groupby('B', as_index=False)))
groupsB_two = dict(list(groupsA_two[key_A].groupby('B', as_index=False)))
for key_B in groupsB_one:
# Group by C
tmp = groupsB_two[key_B].groupby('C', as_index=False)['D'].mean() # Returns DataFrame with NaN
tmp['D'] = groupsB_one[key_B].groupby('C', as_index=False)['D'].mean()['D']
print tmp
df2_new = [] # ???
return df2_new
if __name__ == '__main__': …Run Code Online (Sandbox Code Playgroud) 问题是:我有一个元组列表(如果需要,也可以设置)。例如:
a = [(1, 5), (4, 2), (4, 3), (5, 4), (6, 3), (7, 6)]
Run Code Online (Sandbox Code Playgroud)
我想找到的是一个列表
r = [(1, 5, 4, 2, 3, 6, 7)]
Run Code Online (Sandbox Code Playgroud)
因为一旦所有集合放在一起,交集就不是空的。
例如
a = [(1, 5), (4, 2), (4, 3), (5, 4), (6, 3), (7, 6), (8, 9)]
Run Code Online (Sandbox Code Playgroud)
结果应该是
r = [(1, 5, 4, 2, 3, 6, 7), (8, 9)]
Run Code Online (Sandbox Code Playgroud)
希望问题很清楚。那么在python中最优雅的方法是什么,如果有的话?
干杯
我有一个一维数组,可以这样说:
import numpy as np
inp_vec = np.array([1, 2, 3])
Run Code Online (Sandbox Code Playgroud)
现在,我想构造一个形式的矩阵
m = [[0, 1-2, 1-3], [2-1, 0, 2-3], [3-1, 3-2, 0]]
Run Code Online (Sandbox Code Playgroud)
当然,可以使用for循环来完成此操作,但是有没有更优雅的方法呢?