修改python数据帧
使用python如何更改数据帧修改python数据帧,python,pandas,Python,Pandas,使用python如何更改数据帧 输入 id1 AAA 12 id1 BBB 2 id2 DDD 3 id2 AAA 23 id3 FFF 34 id3 AAA 5 id3 BBB 65 输出 id1 id2 id3 AAA 12 23 0 BBB 2 0 65 DDD 0 3 0 FFF 0 0 34 我认为pivot_table功能正是您所需要的 row = [["id1", "AAA", 12],["id2", "BBB", 2],[
- 输入
id1 AAA 12 id1 BBB 2 id2 DDD 3 id2 AAA 23 id3 FFF 34 id3 AAA 5 id3 BBB 65
- 输出
id1 id2 id3 AAA 12 23 0 BBB 2 0 65 DDD 0 3 0 FFF 0 0 34
row = [["id1", "AAA", 12],["id2", "BBB", 2],["id3", "CCC", 1],["id1", "BBB", 4],["id2", "AAA", 1],["id3", "AAA", 3]]
df=pd.DataFrame(row, columns=["id", "letters", "numbers"])
df.pivot_table(values="numbers", index="letters",columns="id").reset_index()
它与excel中的透视表一样,在索引重复的情况下对值求和(但您可以将聚合函数设置为平均值)我认为透视表函数就是您要寻找的
row = [["id1", "AAA", 12],["id2", "BBB", 2],["id3", "CCC", 1],["id1", "BBB", 4],["id2", "AAA", 1],["id3", "AAA", 3]]
df=pd.DataFrame(row, columns=["id", "letters", "numbers"])
df.pivot_table(values="numbers", index="letters",columns="id").reset_index()
它执行excel中透视表的操作,在索引重复的情况下对值求和(但您可以将聚合函数设置为平均值)您可以使用unstack()和fillna()获得预期的输出
from pandas.compat import StringIO as pStringIO
new_data = pStringIO("""id Symbol Value
id1 AAA 12
id1 BBB 2
id2 DDD 3
id2 AAA 23
id3 FFF 34
id3 AAA 5
id3 BBB 65""")
df = pd.read_csv(new_data, sep="\s+", index_col=[0,1], skipinitialspace=True)
df_soln = (df.unstack(level=0)).fillna(0)
print(df_soln)
给你
Value
id id1 id2 id3
Symbol
AAA 12.0 23.0 5.0
BBB 2.0 0.0 65.0
DDD 0.0 3.0 0.0
FFF 0.0 0.0 34.0
如果您不希望顶级显示值,只需执行以下操作
df_soln.columns = [c[-1] for c in df_soln.columns]
可以使用unstack()和fillna()获得预期的输出
from pandas.compat import StringIO as pStringIO
new_data = pStringIO("""id Symbol Value
id1 AAA 12
id1 BBB 2
id2 DDD 3
id2 AAA 23
id3 FFF 34
id3 AAA 5
id3 BBB 65""")
df = pd.read_csv(new_data, sep="\s+", index_col=[0,1], skipinitialspace=True)
df_soln = (df.unstack(level=0)).fillna(0)
print(df_soln)
给你
Value
id id1 id2 id3
Symbol
AAA 12.0 23.0 5.0
BBB 2.0 0.0 65.0
DDD 0.0 3.0 0.0
FFF 0.0 0.0 34.0
如果您不希望顶级显示值,只需执行以下操作
df_soln.columns = [c[-1] for c in df_soln.columns]