我有一个数据框,其中一列有很多NaN值.当NaN在列中时,我需要通过另一个列值更新这些值.
One Two
0 10 21
1 11 NaN
2 12 25
Run Code Online (Sandbox Code Playgroud)
我想要这样的结果
One Two
0 10 21
1 11 **11**
2 12 25
Run Code Online (Sandbox Code Playgroud)
请帮助我在第二列中进行切片合成,并让Nafill检测从第一列复制值.
这是创建第一个矩阵的代码:
df = pd.DataFrame({'One' : [10, 11, 12], 'Two' : [21, np.NAN, 25]})
Run Code Online (Sandbox Code Playgroud) 我有这个简单的数据帧df:
a,b
1,2
1,3
1,4
1,2
2,1
2,2
2,3
2,5
2,5
Run Code Online (Sandbox Code Playgroud)
我想检查一下b每个组中是否有重复项a.到目前为止,我做了以下事情:
g = df.groupby('a')['b'].unique()
Run Code Online (Sandbox Code Playgroud)
返回:
a
1 [2, 3, 4]
2 [1, 2, 3, 5]
Run Code Online (Sandbox Code Playgroud)
但我想要的是一个列表,对于每个组中的a多个事件b.在这种情况下的预期输出将是:
a
1 [2]
2 [5]
Run Code Online (Sandbox Code Playgroud) 我一直在努力seaborn和它的heatmap功能.我想构建一个带有来自pandas dataframe的带注释值的矩阵df:
C,L,N
a,x,10
a,y,2
a,z,4
b,x,1
b,y,22
b,z,11
c,x,3
c,y,1
c,z,0
Run Code Online (Sandbox Code Playgroud)
到目前为止,它适用于:
# Read DataBase
df = pd.read_csv('myfile.csv')
# Save Users/City/Language Matrix
pdf = df.pivot(index='C',columns='L',values='N').fillna(0)
# Set Font Parameters
rc = {'font.size': 8, 'xtick.labelsize': 11, 'ytick.labelsize': 11}
# Set Figure
fig = plt.figure(figsize=(20, 9))
# Assign to Seaborn
sns.set(rc=rc)
with sns.axes_style('white'):
sns.heatmap(pdf,
cbar=False,
square=False,
annot=True,
cmap='Blues',
fmt='g',
linewidths=0.5)
Run Code Online (Sandbox Code Playgroud)
哪个回报:
最后,我有兴趣只保留值并将结构保存为一个简单的表格,丢弃颜色.我尝试设置cmap=None但它不起作用,没有cmap,seaborn为cmap热图分配默认值.
在天气或股票市场数据的情况下,温度和股票价格都是在任何给定日期的多个站点或股票行情中测量的。
因此,设置包含两个字段的索引的最有效方法是什么?
对于天气:weather_station 然后是 Date
对于股票数据:stock_code 然后是日期
以这种方式设置索引将允许过滤,例如:
stock_df["code"]["start_date":"end_date"]weather_df["station"]["start_date":"end_date"]我正在使用这个名为 UTM 的 python 包,它将 WGS84 坐标转换为 UTM,反之亦然。我想将此函数应用于 pandas 数据框。该函数的工作原理如下:
utm.from_latlon(51.2, 7.5)
>>> (395201.3103811303, 5673135.241182375, 32, 'U')
Run Code Online (Sandbox Code Playgroud)
其中输入是几个坐标,它返回 UTM 系统中相同坐标的元组。出于我的目的,我只对元组的前两个元素感兴趣。
我正在开发一个名为的数据框cities:
City;Latitude;Longitude;minx;maxx;miny;maxy
Roma;41.892916;12.48252;11.27447419;13.69056581;40.99359439;42.79223761
Paris;48.856614;2.352222;0.985506011;3.718937989;47.95729239;49.75593561
Barcelona;41.385064;2.173403;0.974836927;3.371969073;40.48574239;42.28438561
Berlin;52.519171;13.406091;11.92835553;14.88382647;51.61984939;53.41849261
Moscow;55.755826;37.6173;36.01941671;39.21518329;54.85650439;56.65514761
Run Code Online (Sandbox Code Playgroud)
我想为每行添加四列,称为 'utmminx'、'utmmax'、'utmminy'、'utmmaxy' 作为将 utm 函数应用于 'minx'、'maxx'、'miny'、' 的结果maxy' 列。到目前为止,我尝试了以下操作,将结果元组的第一个和第二个值分配给新列:
cities['utmminx'],cities['utmmaxx'] = utm.from_latlon(cities['minx'],cities['maxx'])[0],utm.from_latlon(cities['minx'],cities['maxx'])[1]
Run Code Online (Sandbox Code Playgroud)
但我收到了一条消息,ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().我尝试仅将第一行值设置为函数,并且它有效:
utm.from_latlon(cities['minx'][0],cities['maxx'][0])[0],utm.from_latlon(cities['minx'][0],cities['maxx'][0])[1]
>>> (357074.7837193568, 1246647.7959235134)
Run Code Online (Sandbox Code Playgroud)
我想避免数据帧上的经典循环,因为我认为有一个经典的 pandas 方法可以做到这一点。
我有一个像这样的pandas数据框:
P-101 P-103 P-104 P-107 P-114 P-120
P 2415 2535 3345 5650 2805 6210
S 0 45 3105 1165 0 0
D 0 690 690 570 255 830
Run Code Online (Sandbox Code Playgroud)
我想对divmod(value, 60)每个单元格应用a ,然后将结果格式化为[quotient]h[remainder]m,如下所示:5h30m
我试过了:
df.values.apply(lambda x: divmod(x,60))
Run Code Online (Sandbox Code Playgroud)
但那抛出了一个 AttributeError
我如何申请divmod每一个价值?
我的df1:
cnpj num_doc bc_icms
0 02817342000124 0000010154 17827.07
1 54921580000189 0000112428 108000.00
2 08953538000122 0000012865 232.00
3 08953538000122 0000012865 239.00
4 08953538000122 0000012865 215.00
5 07374346000107 0000014224 320.12
6 07374346000107 0000014231 385.04
7 07374346000107 0000014263 401.28
8 07374346000107 0000014279 391.26
9 02364118000124 0000015263 37353.10
10 02364118000124 0000015264 56214.14
Run Code Online (Sandbox Code Playgroud)
输出df1.dtypes:
cnpj object
num_doc object
bc_icms float64
dtype: object
Run Code Online (Sandbox Code Playgroud)
所以....我正在尝试创建一个数据透视表来回答以下问题:
什么是
sum的bc_icms每一个cnpj?
这就是我写的:
indexes = [np.array(df1['cnpj']), np.array(df1['num_doc'])]
pt1 = pd.DataFrame(df1['bc_icms'], index=indexes)
print pt1 …Run Code Online (Sandbox Code Playgroud) 我有一个df像这样的pandas数据框:
no_obs price_cleaning house_size
0 1 585 30
1 1 585 40
2 1 585 43
3 1 650 43
4 1 633 44
5 1 650 45
6 2 585 50
7 1 633 50
8 1 650 50
9 2 750 50
Run Code Online (Sandbox Code Playgroud)
我想price_cleaning用这个函数对列中的值进行舍入:
def roundup(x):
return int(math.ceil(x / 10.0)) * 10
我已经尝试了这个答案的解决方案(按功能将功能应用于Pandas数据帧):
cols = [col for col in df.columns if col != 'price_cleaning']
df[cols] = df[cols].apply(roundup)
我收到以下错误:TypeError :("无法将系列转换为",'发生在索引no_obs')
任何人都可以帮助我理解为什么这不起作用?如何将舍入功能应用于列?任何帮助深表感谢.
Excel 的第一行包含每个单元格中带有 \n 字符的单词。例如:
月份 “中东北部\n(NSA)” “中东北部\n(SA)” “中东南部\n(NSA)”
因此,在使用以下代码转换为 csv 时:
data_xls = pd.read_excel('/home/scripts/usless/HP_PO_hist.xls', 'sheet1', index_col=4,skiprows=3)
data_xls.to_csv('HH_PO_output.csv', encoding='utf-8')
Run Code Online (Sandbox Code Playgroud)
它将 \n 之后的字符转换为新行,例如:
,月,“中东北部 (国家安全局)”,“中东北部 (SA)","中东南部 (美国国家安全局)”,“中东南部
但预期的输出是这样的:
月份 中东北部 (NSA) 中东北部 (SA) 中东南部 (NSA) 中东南部 (SA)
在 Python df 中转换为 csv 时,如何仅从此索引行中删除此 \n 字符?
我有一个非常基本的函数,它取一个字符串的前六个字母.我想将它应用于我的DataFrame中的列.
码:
import re
import pandas as pd
import numpy as np
dfp = pd.DataFrame({'A' : [np.NaN,np.NaN,3,4,5,5,3,1,5,np.NaN],
'B' : [1,0,3,5,0,0,np.NaN,9,0,0],
'C' : ['AA1233445','A9875', 'rmacy','Idaho Rx','Ab123455','TV192837','RX','Ohio Drugs','RX12345','USA Pharma'],
'D' : [123456,123456,1234567,12345678,12345,12345,12345678,123456789,1234567,np.NaN],
'E' : ['Assign','Unassign','Assign','Ugly','Appreciate','Undo','Assign','Unicycle','Assign','Unicorn',]})
def six_dig(thing):
return str(thing)[:6]
dfp6= dfp[dfp['C'].apply(six_dig, axis=1)]
Run Code Online (Sandbox Code Playgroud)
但我得到:TypeError: six_dig() got an unexpected keyword argument 'axis'
我甚至尝试使用.map()但得到同样的错误.
如果我删除axis=1我得到:KeyError: ["STUFF"] not in index
我必须遗漏一些非常简单的东西,因为我之前在DataFrame列上使用了函数...
pandas ×10
python ×10
dataframe ×2
apply ×1
csv ×1
divmod ×1
excel ×1
indexing ×1
pivot-table ×1
python-2.7 ×1
python-3.5 ×1
python-3.x ×1
seaborn ×1
time-series ×1
utm ×1