是否可以附加到不包含任何索引或列的空数据框?
我试图这样做,但最后继续得到一个空的数据帧.
例如
df = pd.DataFrame()
data = ['some kind of data here' --> I have checked the type already, and it is a dataframe]
df.append(data)
Run Code Online (Sandbox Code Playgroud)
结果如下:
Empty DataFrame
Columns: []
Index: []
Run Code Online (Sandbox Code Playgroud) 假设我有两个这样的DataFrame:
left = pd.DataFrame({'key1': ['foo', 'bar'], 'lval': [1, 2]})
right = pd.DataFrame({'key2': ['foo', 'bar'], 'rval': [4, 5]})
Run Code Online (Sandbox Code Playgroud)
我想合并它们,所以我尝试这样的事情:
pd.merge(left, right, left_on='key1', right_on='key2')
Run Code Online (Sandbox Code Playgroud)
而且我很高兴
key1 lval key2 rval
0 foo 1 foo 4
1 bar 2 bar 5
Run Code Online (Sandbox Code Playgroud)
但是我正在尝试使用join方法,我一直认为它非常相似.
left.join(right, on=['key1', 'key2'])
Run Code Online (Sandbox Code Playgroud)
我得到了这个:
//anaconda/lib/python2.7/site-packages/pandas/tools/merge.pyc in _validate_specification(self)
406 if self.right_index:
407 if not ((len(self.left_on) == self.right.index.nlevels)):
--> 408 raise AssertionError()
409 self.right_on = [None] * n
410 elif self.right_on is not None:
AssertionError:
Run Code Online (Sandbox Code Playgroud)
我错过了什么?
我有一个布尔类型的NumPy数组'boolarr'.我想计算其值为的元素数量True
.是否有专门用于此任务的NumPy或Python例程?或者,我是否需要迭代脚本中的元素?
我有一个名为的数据帧data
.如何重命名唯一的一个列标题?例如gdp
,以log(gdp)
?
data =
y gdp cap
0 1 2 5
1 2 3 9
2 8 7 2
3 3 4 7
4 6 7 7
5 4 8 3
6 8 2 8
7 9 9 10
8 6 6 4
9 10 10 7
Run Code Online (Sandbox Code Playgroud) 我有熊猫数据帧df1
和df2
(DF1是vanila数据帧,DF2由"STK_ID"和"RPT_Date"索引):
>>> df1
STK_ID RPT_Date TClose sales discount
0 000568 20060331 3.69 5.975 NaN
1 000568 20060630 9.14 10.143 NaN
2 000568 20060930 9.49 13.854 NaN
3 000568 20061231 15.84 19.262 NaN
4 000568 20070331 17.00 6.803 NaN
5 000568 20070630 26.31 12.940 NaN
6 000568 20070930 39.12 19.977 NaN
7 000568 20071231 45.94 29.269 NaN
8 000568 20080331 38.75 12.668 NaN
9 000568 20080630 30.09 21.102 NaN
10 000568 20080930 26.00 30.769 NaN
>>> df2 …
Run Code Online (Sandbox Code Playgroud) 注意:此问题仅供参考.我很有兴趣看到Python内部有多深入,可以使用它.
不久前,在一个问题内部开始讨论是否可以在调用之后/期间修改传递给print语句的字符串print
.例如,考虑功能:
def print_something():
print('This cat was scared.')
Run Code Online (Sandbox Code Playgroud)
现在,当print
运行时,输出到终端应该显示:
This dog was scared.
Run Code Online (Sandbox Code Playgroud)
请注意,"cat"一词已被"dog"一词取代.在某处某处能够修改那些内部缓冲区来改变打印的内容.假设这是在没有原始代码作者的明确许可的情况下完成的(因此,黑客/劫持).
这个评论从智者@abarnert,尤其让我思考:
有几种方法可以做到这一点,但它们都非常丑陋,永远不应该完成.最简单的方法是
code
将函数内的对象替换为 具有不同co_consts
列表的对象.接下来可能会进入C API来访问str的内部缓冲区.[...]
所以,看起来这实际上是可行的.
这是我解决这个问题的天真方式:
>>> import inspect
>>> exec(inspect.getsource(print_something).replace('cat', 'dog'))
>>> print_something()
This dog was scared.
Run Code Online (Sandbox Code Playgroud)
当然,这exec
很糟糕,但这并没有真正回答这个问题,因为在 print
调用时/后调用时它实际上并没有修改任何内容.
如果@abarnert解释了它会怎么做?
Collection
和List
Java有什么区别?我什么时候应该使用哪个?
我有一个包含4列的pandas DataFrame,我想创建一个只有三列的新 DataFrame .这个问题类似于:从数据框中提取特定列,但是对于不是R的pandas.以下代码不起作用,引发错误,并且当然不是这种方式的pandasnic方法.
import pandas as pd
old = pd.DataFrame({'A' : [4,5], 'B' : [10,20], 'C' : [100,50], 'D' : [-30,-50]})
new = pd.DataFrame(zip(old.A, old.C, old.D)) # raises TypeError: data argument can't be an iterator
Run Code Online (Sandbox Code Playgroud)
什么是pandasnic方式呢?
我根据满足的另一列中的条件从列中提取数据的子集.
我可以返回正确的值,但它位于pandas.core.frame.DataFrame中.如何将其转换为列表?
import pandas as pd
tst = pd.read_csv('C:\\SomeCSV.csv')
lookupValue = tst['SomeCol'] == "SomeValue"
ID = tst[lookupValue][['SomeCol']]
#How To convert ID to a list
Run Code Online (Sandbox Code Playgroud) 我正在寻找通过熊猫逐行迭代DataFrame
.我到目前为止的方式如下:
for i in df.index:
do_something(df.ix[i])
Run Code Online (Sandbox Code Playgroud)
是否有更高性能和/或更惯用的方式来做到这一点?我知道应用,但有时使用for循环更方便.